我有一个以下3层的WCF:
有人可以帮我解决一下:
上述哪一层是在以下场景中捕获和记录异常的最佳位置:
情景1:
DLL上发生异常。
场景:2:
在BLL上发生异常。
另外,我是否应始终将Try和Catch上的服务的BLL调用包裹起来?
答案 0 :(得分:4)
这取决于你的系统,但我会在BLL中记录异常。并提醒你“登录”不要抓住!那就是 - 在捕获结束时将进行重新抛出!
我根本没有抓到任何服务 - 这只是为了与客户沟通 - 不需要在其中加入任何逻辑恕我直言。
当然:抓住你的预期的例外情况,抛出它们,然后让它们通过。
例如: 场景1 - 可能捕获SqlExceptions,尝试处理它们,如果没有将它们包装在某些DAL-Exception中并抛出它们。 场景2 - 可能会从第3层捕获DAL-Exceptions,看看你是否可以处理它们或再次包装它们,...
恕我直言,处理,记录和静音各种未预料到的异常(catch (Exception)
)几乎绝不是一个好主意 - 此后应用程序状态将非常不确定。
答案 1 :(得分:3)
阅读MSDN上有关Microsoft Exception Handling Block
的一些文章它经历了很多场景,并为您提供了一些关于异常处理策略最佳实践的好主意,无论您是否使用异常处理块,如下图所示。