嘉兴网站建设托管,物流网站建设公司,百度网站联盟推广,标智客logo在线设计生成器一.异常的概念
在Java中#xff0c;异常#xff08;Exception#xff09;是指程序执行过程中可能出现的不正常情况或错误。它是一个事件#xff0c;它会干扰程序的正常执行流程#xff0c;并可能导致程序出现错误或崩溃。
异常在Java中是以对象的形式表示的#xff0c;…一.异常的概念
在Java中异常Exception是指程序执行过程中可能出现的不正常情况或错误。它是一个事件它会干扰程序的正常执行流程并可能导致程序出现错误或崩溃。
异常在Java中是以对象的形式表示的这些对象是从java.lang.Throwable类或其子类派生而来。Throwable是异常类层次结构的根类它有两个主要的子类java.lang.Exception和java.lang.Error。
Exception异常java.lang.Exception是表示可检查异常的基类。可检查异常是指在编译时需要显式处理的异常。Exception类及其子类用于表示程序运行过程中可能出现的外部条件、错误或其他可恢复的情况。例如文件未找到、网络连接中断、输入格式错误等。开发人员需要通过捕获或声明这些异常来确保在程序中进行适当的异常处理。
Error错误java.lang.Error是表示严重问题或系统级错误的基类。错误是指那些程序通常无法处理或恢复的情况例如内存溢出、堆栈溢出、虚拟机错误等。与异常不同错误不需要在程序中显式处理因为它们通常表示了无法解决的问题。
异常在Java中通过抛出throw和捕获catch的方式进行处理。当程序执行到可能引发异常的代码时可以使用throw语句手动抛出异常对象。然后可以使用try-catch语句块来捕获异常并在catch块中提供相应的异常处理逻辑。在catch块中可以根据异常的类型执行适当的操作如日志记录、错误报告或异常处理。如果异常没有在当前方法中被捕获处理它将继续向上级调用栈传播直到找到合适的异常处理代码或导致程序终止。 二.未进行异常处理
未进行异常处理的程序
/* java Div 6 2* 6/23*/public class Div {public static void main(String args[]) {int m Integer.parseInt(args[0]);int n Integer.parseInt(args[1]);System.out.println(Begin of div);int r div(m, n);System.out.println(End of div);System.out.println(m/nr);}public static int div(int m, int n) {int r m / n;return r;}
}
没有进行异常处理编译运行结果 程序退出
rootubuntu:/home/topeet/guyilian# javac Div.java
rootubuntu:/home/topeet/guyilian# java Div 6 3
Begin of div
End of div
6/32
rootubuntu:/home/topeet/guyilian# java Div 6 0
Begin of div
Exception in thread main java.lang.ArithmeticException: / by zeroat Div.div(Div.java:22)at Div.main(Div.java:14)
rootubuntu:/home/topeet/guyilian#
三.异常处理
使用try-catch语句进行异常处理
/* java Div 6 2* 6/23*/public class Div2 {public static void main(String args[]) {int m Integer.parseInt(args[0]);int n Integer.parseInt(args[1]);System.out.println(Begin of div);int r div(m, n);System.out.println(End of div);System.out.println(m/nr);}public static int div(int m, int n) {int r 0;try {r m / n;} catch (ArithmeticException e) {System.out.println(e);} finally {System.out.println(this is finally of div);}return r;}
}
rootubuntu:/home/topeet/guyilian# javac Div2.java
rootubuntu:/home/topeet/guyilian# java Div2 6 3
Begin of div
this is finally of div
End of div
6/32
rootubuntu:/home/topeet/guyilian# java Div2 6 0
Begin of div
java.lang.ArithmeticException: / by zero
this is finally of div
End of div
6/00使用抛出throw处理异常
/* java Div 6 2* 6/23*/public class Div4 {public static void main(String args[]) {int m Integer.parseInt(args[0]);int n Integer.parseInt(args[1]);int r 0;System.out.println(Begin of div);try {r div(m, n);} catch (ArithmeticException e) {System.out.println(e);}System.out.println(End of div);System.out.println(m/nr);}public static int div(int m, int n) throws ArithmeticException {int r 0;r m / n;return r;}
}
运行结果
rootubuntu:/home/topeet/guyilian# javac Div4.java
rootubuntu:/home/topeet/guyilian# java Div4 6 3
Begin of div
End of div
6/32
rootubuntu:/home/topeet/guyilian# java Div4 6 0
Begin of div
java.lang.ArithmeticException: / by zero
End of div
6/00可以有多个catch语句捕获不同的异常
/* java Div 6 2* 6/23*/public class Div7 {public static void main(String args[]) {int m 0;int n 0;int r 0;System.out.println(Begin of div);try {m Integer.parseInt(args[0]);n Integer.parseInt(args[1]);r div(m, n);} catch (ArithmeticException e) {System.out.println(main :e);} catch (NumberFormatException e) {System.out.println(main :e);} catch (RuntimeException e) {System.out.println(main :e);}System.out.println(End of div);System.out.println(m/nr);}public static int div(int m, int n) throws ArithmeticException {int r 0;try {r m / n;} catch (ArithmeticException e) {System.out.println(div :e);throw e;}return r;}
}
运行
rootubuntu:/home/topeet/guyilian# javac Div7.java
rootubuntu:/home/topeet/guyilian# java Div7 6 2
Begin of div
End of div
6/23
rootubuntu:/home/topeet/guyilian# java Div7 6 0
Begin of div
div :java.lang.ArithmeticException: / by zero
main :java.lang.ArithmeticException: / by zero
End of div
6/00