无论是否发生异常(除特殊情况外),finally 语句块中的代码都会被执行
如果 try 代码块中没有拋出异常,则执行完 try 代码块之后直接执行 finally 代码块,然后执行 try catch finally 语句块之后的语句
如果 try 代码块中拋出异常,并被 catch 子句捕捉,那么在拋出异常的地方终止 try 代码块的执行,转而执行相匹配的 catch 代码块,之后执行 finally 代码块。如果 finally 代码块中没有拋出异常,则继续执行 try catch finally 语句块之后的语句
try {
int a = 10;
int b = 0;
return (a / b);
} catch (Exception e) {
System.out.println("Exception");
throw new IOException();
} finally {
System.out.println("finally");
return 1000;
}
1.try和finally中都有return
try里面的不算数,而是执行finally中的return,也就是说:当try、catch中有return时,finally中的代码依然会继续执行
public static void main(String[] args) throws FileNotFoundException {
System.out.println("执行结果:" + test());
}
private static int test() {
int num = 0;
try {
// num=1,此处不返回
num++;
return num;
} catch (Exception e) {
// do something
} finally {
// num=2,返回此值
num++;
return num;
}
}