码迷,mamicode.com
首页 > 其他好文 > 详细

try、catch、finally容易忽略的点

时间:2020-12-07 12:38:11      阅读:6      评论:0      收藏:0      [点我收藏+]

标签:str   return   cep   print   表达   没有   sys   nal   except   

try、catch、finally用法总结:

  1、不管有没有异常,finally中的代码都会执行

  2、当try、catch中有return时,finally中的代码依然会继续执行

  3、finally是在return后面的表达式运算之后执行的,此时并没有返回运算之后的值,而是把值保存起来,不管finally对该值做任何的改变,返回的值都不会改变,依然返回保存起来的值。也就是说方法的返回值是在finally运算之前就确定了的。

  4、finally代码中最好不要包含return,程序会提前退出,也就是说返回的值不是try或catch中的值

 

执行顺序:

public static void main(String[] args) {
        System.out.println(test());
    }
   public static int test(){
       int i = 1;
       try{
           i++;
           System.out.println("try block, i = "+i);
       }catch(Exception e){
           i ++;
           System.out.println("catch block i = "+i);
       }finally{
           i = 10;
           System.out.println("finally block i = "+i);
       }
       return i;
   }

结果输出如下:

    try block, i = 2

    finally block i = 10

    10

  先执行try里面代码,再finally代码,最后return。

 

 

当我们把return放到try块中和catch块中,会怎么样呢?

public static void main(String[] args) {
        System.out.println(test());
    }
   public static int test(){
       int i = 1;
       try{
           i++;
           System.out.println("try block, i = "+i);
           return i;
       }catch(Exception e){
           i ++;
           System.out.println("catch block i = "+i);
           return i;
       }finally{
           i = 10;
           System.out.println("finally block i = "+i);
       }
   }

结果输出如下:

  try block, i = 2
  finally block i = 10
  2

如我们总结一样:

   1、当try、catch中有return时,finally中的代码依然会继续执行

   2、finally是在return后面的表达式运算之后执行的,此时并没有返回运算之后的值,而是把值保存起来,不管finally对该值做任何的改变,返回的值都不会改变,依然返回保存起来的值。也就是说方法的返回值是在finally运算之前就确定了的。

另外,如果在finally中存在return,有黄色警告:finally block does not complete normally,意思是finally代码块不能正常完成。

try、catch、finally容易忽略的点

标签:str   return   cep   print   表达   没有   sys   nal   except   

原文地址:https://www.cnblogs.com/rh1910362960/p/14074436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!