异常处理的格式
异常:异常是导致程序中断运行的一种指令流,当异常发生时,如果没有进行良好的处理,则程序将会中断执行。
try{
} catch (异常类 异常对象) {
}finally{
}
不管是否出现异常,都会执行finally语句中的代码,但是finally语句可省略(此语句块的编写中尽量不出现throw与return这样的语句,以避免不必要的问题出现)。
异常的分类
异常是一个对象,它继承自Throwable类,所有的Throwable类的子孙类所产生的对象都是异常(不能直接抛出Throwable类,最大只能抛出Exception类):
Exception:一般表示的是程序中出现的问题,可以直接使用try…catch进行处理
Error:由Java虚拟机生成并抛出,是不指望程序能从其恢复过来的灾难性故障。所以程序员不需要捕捉各处理它们
抛出异常
一个方法不处理它产生的异常,而是沿着调用层次向上传递,由调用它的方法来处理这些异常,叫抛出异常
方法:在产生异常的方法名后面加上要抛出(throws)的异常的列表
(public int div(int I,int j) throwsException{})
实例应用
public class ExceptionDemo {
public static void main(String[] args) {
Math math = new Math();
try {
System.out.println("除法操作" + math.div(10, 0));
} catch (Exception e) {//进行异常的捕获
System.out.println("异常产生:" + e);//处理异常
}
}
}
class Math {
public int div(int i, int j) throws Exception{//方法可以不处理异常
System.out.println("======计算开始=====");
int temp = 0;
try {
temp = i / j;
} catch (Exception e) {//捕获异常
throw e;//不处理,把异常交给被调用处
} finally {//不管如何都执行
System.out.println("======计算结束=====");
}
return temp;
}
}
//======计算开始=====
//======计算结束=====
//异常产生:java.lang.ArithmeticException: / by zero
执行过程如下:
Exception类与RuntimeException类
Exception:在程序中必须使用try…catch进行处理
RuntimeException:可以不使用try…catch进行处理,如果有异常产生,将由JVM进行处理
断言
assert boolean 表达式 (:详细的信息);
如果表达式的结果为true,则什么错误信息都不会提示;如果为false,则会提示错误信息,如果没有声明详细的信息描述,则系统会使用默认的错误信息提示方式
public class AssertDemo {
public static void main(String[] args) {
int x[] = { 1, 2, 3 };
assert x.length == 0 : "数组长度不为0";
}
}
要想使断言起作用,在JAVA运行时,应加入“-enableassertions”参数,也可简写为“-ea”
编译程序:javac AssertDemo.java
验证程序:java –ea AssertDemo