一尘不染

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

c#

捕获异常并重新抛出异常时应考虑哪些最佳实践?我想确保保留了Exception对象的InnerException和堆栈跟踪。以下代码块之间的处理方式是否有所不同?

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

VS:

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

阅读 260

收藏
2020-05-19

共1个答案

一尘不染

保存堆栈跟踪的方法是通过使用的throw;,这是合法以及

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

throw ex;从本质上讲,就像从该点引发异常一样,因此堆栈跟踪只会到达您发出该throw ex;语句的位置。

迈克也是正确的,假设该异常允许您传递异常(建议)。

Karl
Seguin
编程电子书的基础上也对异常处理进行了出色的撰写,这是一本不错的书。

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

2020-05-19