小编典典

捕获和重新抛出 .NET 异常的最佳实践

all

捕获异常并重新抛出它们时要考虑的最佳实践是什么?我想确保保留Exception对象InnerException和堆栈跟踪。以下代码块的处理方式有区别吗?

try
{
    //some code
}
catch (Exception ex)
{
    throw ex;
}

对比:

try
{
    //some code
}
catch
{
    throw;
}

阅读 68

收藏
2022-04-22

共1个答案

小编典典

保存堆栈跟踪的方法是通过使用throw;This is valid as well

try {
  // something that bombs here
} catch (Exception ex)
{
    throw;
}

throw ex;基本上就像从那时开始抛出异常一样,所以堆栈跟踪只会转到您发出throw ex;语句的地方。

Mike也是正确的,假设异常允许您传递异常(这是推荐的)。

Karl
Seguin
在他的编程基础电子书中也有一篇关于异常处理的精彩文章,这是一本很好的读物。

编辑:编程基础pdf的工作链接。只需在文本中搜索“异常”即可。

2022-04-22