1

我目前有一个具有以下结构的系统:网站 -> WCF -> 数据库

WCF 部分在调用时调用 BLL,BLL 反过来又调用实体框架来获取它需要的数据并发送回网站。目前我已经将我的 try catch 语句放在 WCF 服务中,因此如果实体框架或 BLL 中发生任何错误,服务会获取它并将 FaultException 抛出回网站。该网站不进行任何异常处理,我使用的是 ELMAH,所以我只收到一封包含错误的电子邮件,并且用户被重定向到错误页面。

这是放置 try catch 块的好地方,还是应该在 BLL 层或网站中?我不想处理这些错误,只是让它们被向上推,这样用户就可以看到错误页面,我会收到一封电子邮件,里面有发生的事情。

4

2 回答 2

7

异常块不应仅放置在特定层中。每一层都可能发生异常情况,每一层都可以处理,如果它有能力

无论如何,异常应该对最终用户尽可能“愉快”,而且您似乎很好地涵盖了这一部分。

BLL 层很可能应该捕获异常,如果实体框架代码将抛出异常(这可能会发生),并且没有“需要”一直返回到 WCF 服务(即 BLL 层能够处理这个例外)。

于 2013-10-01T19:21:04.257 回答
2

几年前我问过同样的问题。

将 Try Catch 放在业务逻辑或用户界面中

理想情况下,如果你在数据库层捕获异常,你想抛出到 UI 层。

换句话说,您想在 UI 层记录异常。让 UI 层决定是需要向用户显示异常消息还是只显示一般错误消息。

于 2013-10-01T19:35:18.350 回答