try catch finally执行问题

1、介绍:try catch finally语句常用来进行系统异常捕获,在实际的工作中可以在catch语句块中记录系统异常日志。finally语句块是无论前面逻辑代码是否有异常,其内部的语句都会执行。常用于流的关闭等操作

2、分析

private static int testNomal()
{
       int x = 1;
       try
       {
            x += 100;//x等于101
            return x;//返回101
       }
       catch (Exception)
       {
           return 0;//无异常,不执行
       }
       finally
       {
           x += 100;//x等于201
       }
       return x;//不执行
}
//无异常状态下,最终返回101

说明:如果try语句块中没有错误并有return语句,则返回的执行完中即返回结果值,然后继续执行finally块中的语句。

private static int testNomal()
{
       int x = 1;
       try
       {
            x += 100;//x等于101
       }
       catch (Exception)
       {
           return 0;//无异常,不执行
       }
       finally
       {
           x += 100;//x等于201
       }
       return x;//返回201
}
//无异常状态下,最终返回201

说明:如果try块中的语句没有return,则执行finally中的语句库,如果遇到return 则返回,后面的语句不会再执行。如果finally中也没有return,则根据最终的return结果进行返回

private static int testException()
{
   int x = 1;
   try
   {
       x = Convert.ToInt32("aa");//报异常,跳转到catch语句
       return x;//不执行
   }
   catch (Exception)
   {
       return 0;//返回0
   }
   finally
   {
       x += 100;//x等于101
   }
       return x;//不执行
 }

说明:如果try语句块中存在异常,则异常语句后的代码不再执行,直接跳转到catch语句块中进行执行,如果catch中有return语句,则返回,catch中return语句后的代码不再执行,而是执行finally块中的语句。如果catch中没有return语句,则继续执行,知道遇到return语句时才进行结果返回。

重复强调:无论是否存在异常finally中的语句都会执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值