我有一个关于异常处理的问题。 我想这可能很容易,但对我来说,我只是不知道如何在多层项目中处理异常。
让我们说在我的解决方案中,我有几个项目。
我有(较低的)DataAccess,BizComponent,WCF,代理和演示文稿(上)。
我尝试在DataAccess中“尝试捕获”并将异常抛给BizComponent,在BizComponent中我再次尝试“try catch”并记录错误并再次将异常抛给WCF。
在WCF和代理层中,我做同样的事情。在表示层,我向最终用户显示自定义消息。
我的大四学生告诉我,我只需要在WCF和上层开始“try catch”。 我不需要在DataAccess和BizComponent中做,因为它会被捕获 WCF。
我应该尝试捕获DataAccess,BizComponent和中的异常 抛出异常或者我应该只尝试捕获WCF并启动 扔到上层?
哪一种更好的做法?
如果您不清楚我的问题,请告诉我。 这是我的第一个多层项目,所以这让我很困惑。 提前谢谢。
答案 0 :(得分:2)
根据经验,如果要对它们做某事,只处理(捕获)异常。
例如,如果您想在“上层”图层中提供其他信息,则可以在数据层中捕获数据库异常。
我个人使用的方法是捕获并记录业务层中的异常,然后重新抛出相同的异常或包装异常,为堆栈中更高层提供更友好的信息。这提供了一致的记录过程,并且不需要应用程序中的锅炉板记录代码。
如果在多个应用程序中重用代码并需要不同的日志存储,则可以使用依赖注入来处理。