何时包装异常

时间:2010-12-22 21:18:18

标签: exception exception-handling

我应该将每个异常包装在一个更有意义的异常中吗?包装含义使异常成为新异常的内部异常,并抛出“新”异常。

这样做时我需要考虑哪些因素?

包装异常的想法是因为:

SQL Server可能会从T-SQL级别抛出一堆异常。我的C#API只处理SQLException(句柄意味着有一个catch块),所以我想将异常包装到我的API可以处理的类型中。这只是一个例子,SQL Server只抛出SQLException,但这个概念是对的吗?

我认为抛出“新”异常,就像上面提到的那样,会产生一个不是真正原因(dev需要知道)的原因,因此对最终用户来说会更友好并隐藏敏感的实现真实/第一例外的细节。

由于

1 个答案:

答案 0 :(得分:6)

你走在正确的轨道上。在跨越应用程序层边界时包装异常是一种很好的做法。以下两篇文章是关于最佳实践的良好读物

  1. From MSDN
  2. Java specific