何时包装异常

Gur*_*epS 7 exception-handling exception

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

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

包装异常的想法是因为:

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

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

谢谢

Ara*_*ram 6

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

  1. 来自MSDN
  2. 特定于Java