一直有一个疑问:在 try - catch 中加了 return 后,finally 还执行吗?接下来我们来测试一下。
1. 在 try 中加 return
测试代码如下:
public class Finally {
public static String method() {
try {
return "我是 try";
} catch (Exception e) {
} finally {
System.out.println("我是 finally");
}
return null;
}
public static void main(String[] args) {
System.out.println(method());
}
}
控制台输出如下:
我是 finally
我是 try
2. 在 catch 中加 return
测试代码如下:
public class Finally {
public static String method() {
try {
throw new RuntimeException();
} catch (Exception e) {
return "我是 catch";
} finally {
System.out.println("我是 finally");
}
}
public static void main(String[] args) {
System.out.println(method());
}
}
控制台输出如下:
我是 finally
我是 catch
3. 总结
由以上两个测试可知:在 try 和 catch 中即便加了 return,当执行到 return 那一步时,会先执行完 finally 里的代码,然后才会返回。