try-catch-finally中的return与finally浅析

来源:互联网 发布:java占用cpu过高 编辑:程序博客网 时间:2024/05/21 09:38

一、finally中的语句一定执行吗?

finally语句一般来说是一定会执行的,但是也有特殊情况,当遇到一下两种情况,finally中的语句就不会执行。
  1. 在try语句之前就返回,没有执行try-catch-finally语句,这种情况自然不会执行finally中的语句。
  2. 在try语句中有Sysem.exit(0);,此语句的作用是关闭java虚拟机JVM.

二、return与finally语句的执行顺序

  1. try中的return语句在finally之前执行,在finally之后返回值。
public class Demo01 {public static void main(String[] args) {System.out.println(test()) ;}public static String test() {int num = 10 ;try {System.out.println("running try") ;return test2() ;} catch (Exception e) {System.out.println("running catch") ;} finally {System.out.println("running finally") ;}return "end" ;}private static String test2() {System.out.println("running test2()") ;return "return test2()" ;}}
运行结果:
 2.finally中的return语句会覆盖try中的return语句返回。
public class Demo01 {public static void main(String[] args) {System.out.println(test()) ;}public static int test() {int num = 10 ;try {num += 50 ;return num ;} catch (Exception e) {System.out.println("running catch") ;} finally {System.out.println("running finally") ;return 100 ;}}}
运行结果:

0 0