Log日志分析抛出异常:Throw和 Throw ex的区别.

1 篇文章 0 订阅
1 篇文章 0 订阅

Throw 和 Throw ex 抛出异常的区别一般体现在多重方法try/catch/finally的情况,Throw 可以抛出最深层次方法的异常,Throw ex 则是不行。看看如下例子:

1.Throw 抛出异常
using System;
namespace ThrowTest
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                ***ThrowOne();***
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace.ToString());
            }
            Console.ReadKey();
        }
        static void ThrowOne()
        {
            try
            {
                ThrowTwo();
            }
            catch (Exception ex)
            {
                ***throw;***
            }
        }
        static void ThrowTwo()
        {
            try
            {
                throw new Exception("来自方法2的异常");
            }
            catch (Exception ex)
            {
                ***throw;***
            }
        }
    }
}


2.Throw ex 抛出异常
using System;
namespace ThrowTest
{
   class Program
   {
       static void Main(string[] args)
       {
           try
           {
               ***ThrowOne();***
           }
           catch (Exception ex)
           {
               Console.WriteLine(ex.StackTrace.ToString());
           }
           Console.ReadKey();
       }
       static void ThrowOne()
       {
           try
           {
               ThrowTwo();
           }
           catch (Exception ex)
           {
               ***throw ex;***
           }
       }
       static void ThrowTwo()
       {
           try
           {
               throw new Exception("来自方法2的异常");
           }
           catch (Exception ex)
           {
               throw ex;
           }
       }
   }
}

Throw 和 Throw ex 抛出异常如上面两段代码[斜体加粗部分],对比可以知道:
Throw 段代码:出现三个加粗,表示有三个地方抛出异常,可以把最深层次的异常抛出;
Throw ex 段代码:出现二个加粗,表示有二个地方抛出异常,不能把最深层次的异常抛出;
两个异常方法
①: throwMethodOne exist throw
②: throwMethodTwo exit throw ex

  1. ①调用②能抛出①②的异常,
  2. ①调用②不能抛出①的异常,只能抛出②的异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fengzhilu000

送人玫瑰,手留余香!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值