public class FinallyReturnTest {
public static void main(String[] args) {
System.out.print("value = " + testMethod());
}
public static int testMethod() {
try {
System.out.println("before exception");
int y = 1;
int x = y/0;
System.out.println("after exception");
} catch(Exception e) {
System.out.println("catcher");
return 1;
} finally {
System.out.println("finally");
return 2;
}
// System.out.println("outside");
// return 3;
}
}
运行结果是:
before exception
catcher
finally
value = 2
catch中和finally中都有return,此时在try,catch代码块外面不能再写有其它代码了,在finally中添加return 2时,代码中会显示finally block does not complete normally的警告,通过debug,可以得知,虽然先执行了catch中return 1,但是方法并没有退出,接着又去执行finally中代码,当执行到return 2时,方法退出,执行完毕。 |