在上课的过程中,有讲到finally中的return会在catch中return后继续执行,那么是否finally中的语句都会被执行?这个问题是值得探究的。通过查找资料和实践,我解决了这个疑问
首先,我们知道不略是否catch到异常,finally语句都是会执行的,那么有没有不执行到的情况呢?
情况一
try {
System.exit(0);
throw new Exception();
}
finally {
System.out.println("Here is finally");
}
如果在try语句使用System.exit(0)让程序直接退出,那么finally语句是不会执行到的。
try {
throw new RuntimeException();
}catch(Exception e) {
System.exit(0);
}
finally {
System.out.println("Here is finally");
}
当然,在捕获到异常后在handler中使用Sytstem.exit(0)也是可以跳过finally语句的。
情况二
如果在try-catch-finally语句中。try语句没有被执行到,那么显然finally语句也不会执行
下面看看finally语句是否会对try语句中的赋值产生影响
1
public static void main(String