catch中return语句的执行时间
先考虑以下一个普通的示例:
public static int main() { System.out.println("没有参数的main方法"); try{ a=4/0; }catch(Exception e){ return ++a; } finally{ a++; System.out.println("在finally中成功捕获异常!"+a); } System.out.println("成功捕获异常!"+a); return 1; } public static void main(String[] string) { System.out.println(main()); System.out.println("此时a的值为:"+a); }
这段代码执行以后就是:
没有参数的main方法 在finally中成功捕获异常!2 1 此时a的值为:2
从执行结果可以看到,finally语句块必然会执行。而且根据执行的结果可以看到,finally块的执行时间恰好在return 语句中的表达式语句之后(++a后).等finally语句最终执行完成,再最后执行return语句。也就是说finally语句块虽然一定会被执行,但是它却不能影响return语句表达式的值了。