首先,finally里的语句无论try-catch语句是否会发生异常,一定会执行的,除非语句中用了System.exit(0)。如果try语句中有return语句,那么finally语句会是什么时候执行,我们可以编写一段代码进行验证,如下
- public class Test {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- System.out.println(test());
- }
- public static boolean test(){
- try{
- return result1();
- }finally{
- result2();
- }
- }
- public static boolean result1(){
- System.out.println("It's reuturn");
- return true;
- }
- public static void result2(){
- System.out.println("It's finally");
- }
- }
复制代码
执行结果如下
"It's reuturn"
"It's finally"
true
以上结果说明,return首先被执行,finally后被执行,return并不是让结果马上返回,而是先把结果放到函数中,然后必须等待finally结果出来后再返回 |