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
错误信息:
本文来自博客园,作者:Pengxx,转载请注明原文链接:https://www.cnblogs.com/pengxx/p/13179907.html
“先从0到1,再从1到100”