分层应用程序中的异常处理

Dav*_*vid 8 .net c# exception-handling exception

如果我有一个分层应用程序,我的数据层可能会遇到一个OptimisticConcurrencyException,那么调用层或者下层应该如何处理?

调用层不知道OptimisticConcurrencyException是什么,所以我应该实现一个自定义异常并捕获OptimisticConcurrencyException并抛出我的自定义异常?

对此的一些指导将不胜感激.

jga*_*fin 7

OptimisticConcurrencyException是属于数据层的异常,因此应包含在其中.调用层不太可能处理它.

我会创建一个更通用的异常,例如DataSourceException包含一些上下文,例如哪个函数失败(以及哪些参数)以及原因.我还会将原始异常作为内部异常包含在内.

阅读关于捕获异常的博客文章:http://blog.gauffin.org/2010/11/do-not-catch-that-exception/

我还写了一些关于异常处理的其他条目,点击异常标记.

更新

我会创建以下项目:

  • Project.Web <---通过规范接口使用服务.
  • Project.Service < - 实现规范中的所有内容
  • Project.Service.Specification <---在此处放置异常(类)和定义服务的接口(如果不使用任何服务,则放置存储库).