【发布时间】:2016-03-30 11:34:27
【问题描述】:
在我的 WebApi 2 项目中,我遵循服务模式以及工作单元和通用存储库模式。
所有控制器都有try-catch,并且如果一个动作没有我有一个全局IAutofacExceptionFilter 将捕获未处理的异常。
服务层也有异常处理。但是,存储库没有异常处理,因此异常冒泡到他们遇到的第一个try-catch。
我还有一个自定义的DatabaseException 类,它可以捕获SaveChanges 上抛出的EF 数据库异常,这很好用。
但是,由于该项目目前正在大量开发中,数据库更改与代码更改同时发生,因此SQLException 或EntityCommandExecutionException 等异常非常常见。我想捕捉这些异常并抛出我自己的DatabaseException。
我应该在存储库级别、服务级别还是控制器级别捕获这些异常?
【问题讨论】:
-
尽可能靠近原点重新抛出。这样,您仍然可以根据需要进行区分。
-
我的建议是在控制器级别记录异常并使用来自控制器的通用消息抛出异常。
标签: c# entity-framework asp.net-web-api