在多层中处理异常的最佳方法

时间:2011-10-19 08:04:28

标签: asp.net exception

我有一个关于异常处理的问题。 我想这可能很容易,但对我来说,我只是不知道如何在多层项目中处理异常。

让我们说在我的解决方案中,我有几个项目。

我有(较低的)DataAccess,BizComponent,WCF,代理和演示文稿(上)。

我尝试在DataAccess中“尝试捕获”并将异常抛给BizComponent,在BizComponent中我再次尝试“try catch”并记录错误并再次将异常抛给WCF。

在WCF和代理层中,我做同样的事情。在表示层,我向最终用户显示自定义消息。

  

我的大四学生告诉我,我只需要在WCF和上层开始“try catch”。   我不需要在DataAccess和BizComponent中做,因为它会被捕获   WCF。

     

我应该尝试捕获DataAccess,BizComponent和中的异常   抛出异常或者我应该只尝试捕获WCF并启动   扔到上层?

     

哪一种更好的做法?

如果您不清楚我的问题,请告诉我。 这是我的第一个多层项目,所以这让我很困惑。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

根据经验,如果要对它们做某事,只处理(捕获)异常。

例如,如果您想在“上层”图层中提供其他信息,则可以在数据层中捕获数据库异常。

我个人使用的方法是捕获并记录业务层中的异常,然后重新抛出相同的异常或包装异常,为堆栈中更高层提供更友好的信息。这提供了一致的记录过程,并且不需要应用程序中的锅炉板记录代码。

如果在多个应用程序中重用代码并需要不同的日志存储,则可以使用依赖注入来处理。