【问题标题】:catch every exception from DAL with another exception用另一个异常捕获 DAL 的每个异常
【发布时间】:2011-03-24 10:59:07
【问题描述】:

我有一个 n 层 Web 应用程序,我想在来自 DAL(数据访问层)的每个方法中捕获特定类型的异常,并将其作为特定类型的新异常重新抛出。

我的 DAL 中有很多方法,所以我不想开始用 try/catch 包装每个方法。

我认为使用异常处理应用程序块可以做到这一点,但我找不到任何关于如何执行此操作的好的文档...
我对以前版本的应用程序块也不熟悉。

【问题讨论】:

  • 你不想捕获每一个可能的异常。您不想包装应该是无法捕获的异常(在 4.0 中实际上是无法捕获的,yupee!),例如内存不足、A/V 和其他东西;并且您也不希望包装发出错误信号的异常,并且永远不应该在生产环境中抛出异常,例如取消引用 null、除以零和错误参数。
  • 不要这样做,它带来的问题多于解决的问题
  • 好的,我编辑了我的问题以捕捉特定类型的异常。这可能有助于捕获一系列不同的异常,并将它们包装为 DalException persay...

标签: c# exception-handling application-blocks


【解决方案1】:

您的 DAL 存储库有接口吗? 我会使用装饰器模式来实现接口。 所有装饰器都会捕获异常,然后构建一个新异常并将其抛出到上层

需要注意的是,在我们的 n 层应用程序中,我们总是让异常自然地抛出,并在一个地方捕获它们并记录它们。我们只在绝对必要的情况下创建特定的例外,而且这种情况非常罕见。

这样做的原因是代码的可维护性。当 try/catch 无处不在时,代码很容易变得不可读。

【讨论】:

  • +1 表示不应该这样做; -1 提供一种仍然实现它的方法;-)
猜你喜欢
  • 2011-02-26
  • 2019-10-19
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 2010-09-13
  • 2011-06-20
相关资源
最近更新 更多