在异常处理中 try catch finally 这三个关键字往往形影不离 ,我们把它们组合在一起来对 出现的异常进行处理 ,一般使用方式如下 :
public static void method(){
try {
int i = 10 /0 ;
System.out.println("aaaaa");
}catch (ArithmeticException a){
System.out.println("捕获到异常然后继续执行");
System.out.println("bbbbb");
return;
}finally {
System.out.println("finally中的内容");
}
System.out.println("ccccc");
}
结果 :
可见 , try中出现了异常之后 , 则会被catch 捕获 ,然后执行catch里面的内容 ,程序并不会因为异常而终止 , 而且 ,就算我们 使用了 return 来退出这个方法 , 那么他也会去执行完 finally 才会退出 .如果没有 return 的话 ,那么 在执行完 try catch finally 这些之后 ,就会接着执行后面的代码 , 也就是本例最后面那一句输出 " ccccc"
除非我们在catch 中使用了 System.exit(0); 这个方法 ,那么这时 finally不会运行 ,因为此方法相当于停掉了java虚拟机,那么当然不会继续执行下去
另外 我们使用 try catch finally 可以有多种组合
public static void method1(){
try{
int i =10/0;
}catch (ArithmeticException a){
a.printStackTrace();
}catch (NumberFormatException n){
n.printStackTrace();
}
System.out.println("aaaaa");
}
try finally 组合(没有去捕获异常)
public static void method2(){
try{
int i=10/0;
}finally {
System.out.println("finally");
}
System.out.println("aaa");
}
try finally 这种组合 一般适用于 我们只看重执行finally里面的内容 , 因为一旦 try 里面出现了异常,由于没有catch去捕获 ,它在执行完finally里面的内容后就会停掉这个程序 ,所以本例最后输出的"aaa"并不会执行 ,要想 后续代码执行 ,我们必须使用catch来处理