import java.io.*;
public class Test{
public static void main(String[] args){
try{
System.out.println(5/0);
}catch(Exception e){
throw new RuntimeException("catch..");
}finally{
throw new RuntimeException("finally..");
}
}
}
catch和finally语句块都会被执行。因为5/0时触发了ArithmeticException异常,而语句中有catch代码块,程序就会去执行catch代码块中的语句。而finally语句是无论是否触发异常,都会执行的语句,所以,不管你try语句中写的是5/0,过上5/1,无论是否发生异常,finally语句都会被执行。
RuntimeException与一般的异常没有太大的区别,只是方法在抛出RuntimeException时不用在函数中throws声明,这样做是为了让用户调用程序时就能明显的看到异常,让程序中止,对代码进行调整。
个人认为Runtime异常和Error很相似,都是调用者无法处理需要更改代码的书法家,只不过Error比RuntimeException更加的严重。 |