Loading

C# try catch异常捕获中throw与throw ex的区别

结论:

try catch捕获异常直接throw会显示所有的调用堆栈信息,而使用 throw ex 则只会输出到 throw ex 这里的调用堆栈信息。

因为 throw ex 会重置堆栈中的异常起始点,也就是说如果异常在此之前已经发生,使用throw ex是看不到最初异常在哪里发生的信息的。 因此推荐使用直接throw的写法以方便查看到最初的错误发生处及所有调用堆栈信息。

 

测试代码:

public class Program
    {
        static void Main(string[] args)
        {
            try
            {
                GetValue();
            }
            catch (Exception)
            {
                throw;
            }
        }

        static void GetValue()
        {
            int a = 0;
            int b = 1 / a;
        }
    }

 

测试结果:

测试平台  .Net Framework 4.7.2控制台应用程序与 .Net Core 3.1控制台应用程序

1、throw

错误信息:

 

2、throw ex

错误信息:

 

posted @ 2020-06-23 00:10  Pengxx  阅读(398)  评论(0编辑  收藏  举报