在Try-Catch-Finally结构中,finally语句块一般是会被执行到的,不管有没有异常产生,即使try语句或者catch语句里有return语句,finally模块也会被执行。如果try或者catch模块中有System.exit(0),则程序直接退出,finally模块不会被执行。
例子
class Test {
public int aaa() {
int x = 1;
try {
return ++x;
} catch (Exception e) {
} finally {
++x;
System.out.println("x =" + x);
}
return x;
}
}
public class StringTest {
public static void main(String[] args) {
Test a = new Test();
int y = a.aaa();
System.out.println("x =" + y);
}
}
程序在执行try 模块的return 语句之前,先执行++x,在去执行finally 模块语句,最后返回的是try模块里x的值