try-finnaly 语句块 return 问题

来源:互联网 发布:简谱软件 手机版 编辑:程序博客网 时间:2024/05/18 20:04

在tray-catch 语句中,如果有 finally 则表示:finally 块中的语句一定会执行,而且是最后执行。

那么如果在 catch 块 finally 块中都有 return 语句时,return 的会是哪一个呢?我们来做个实验:

public class TryReturn {/** * @param args */public static void main(String[] args) {int a[] = {0, 1, 2};int b = testReturn(a);System.out.println("b = " + b);}private static int testReturn(int[] a) {try {int aa = a[4];System.out.println(aa);} catch (Exception e) {System.out.println("exception");return 1;} finally {System.out.println("finally");return 2;}}}


打印结果如下:
exceptionfinallyb = 2

也就是说,当执行到 catch 中的 return 时,程序并没有返回,而是执行 finally 中的语句,当执行到 return 时,程序返回。


简单的说就一句话:在try-catch-fianlly 块中,如果 finally 中有 return 语句,那么不管 try-catch 中是否有 return语句,都执行 finally 中的 return。

原创粉丝点击