2011-03-24 88 views
1

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

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

我认为这是可能的使用异常处理应用程序块,但我找不到任何良好的文档如何做到这一点...
我不熟悉以前版本的应用程序块。

+1

你不想捕捉*每个*可能的例外。你不想打包那些应该是不可捕捉的异常(在4.0中实际上是不可捕捉的,yupee!),就像那些用于内存不足,A/V和东西的异常;而且你也不想包装那些表示错误的异常,并且不应该像生成引用null的参数那样抛出,除以零和错误的参数。 – 2011-03-24 11:07:12

+1

只是不这样做,它会产生比解决问题更多的问题 – jeroenh 2011-03-24 11:15:06

+0

好的,我编辑了我的问题以捕捉特定类型的异常。这可能很适合捕捉一系列不同的异常,并将它们包装为DalException persay ... – gillyb 2011-03-24 12:00:45

回答

1

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

作为一个需要注意的问题,在我们的n层应用程序中,我们总是让异常自然抛出并捕获它们一次一个地方并记录下来。如果我们确实需要这样做,那么我们只会创建特定的例外情况,而且这种情况很少。

原因是代码的可维护性。当任何地方都存在try/catch时,代码很容易变得不可读。

+0

+1不应该这样做; -1提供了一种方法来实现它;-) – jeroenh 2011-03-24 11:14:37