有return的情况下,try-catch-finally的执行顺序

1. 当try和finally中都有return语句时,系统执行到try语句块中的return时,会先检测finally语句块有没有执行,

如果没有执行,直接去执行finally语句块

try {
  System.out.println("try语句块执行");
  return;
} catch (Exception e) {
  System.out.println("catch语句块执行");

  return;
} finally {
  System.out.println("finally语句块执行");
  return;
}

2. 当我们运行程序时,不排除JVM会突然退出,所以当在try语句块中执行System.exit(1)语句时,JVM会强制退出,这样,finally语句块不会执行

try {
  System.out.println("try语句块执行");
  System.exit(1);
} catch (Exception e) {
System.out.println("catch语句块执行");
  return;
} finally {
  System.out.println("finally语句块执行");
  return;
}

3. 还有一种情况,在发生异常时,在发生异常时,会直接执行catch语句块,异常下面的代码,都不会执行

try {
  System.out.println("try语句块执行");
  int i = 1/0;
  System.exit(1);
} catch (Exception e) {
  System.out.println("catch语句块执行");
  return; } finally {   System.out.println("finally语句块执行");   return; }

 

posted @ 2019-07-11 10:29  草莓罐头  阅读(229)  评论(0编辑  收藏  举报