我有一个包含以下层的 Web 应用程序:
- 客户
- 网络API
- 服务
- 存储库
- 核
我不确定在哪里放置错误处理。在 webAPI 控制器中,我应该只使用 try/catch 语句吗?可以在服务/存储库代码中抛出错误吗?除了一些友好的错误消息之外,我试图避免将任何数据传递给客户端。
我有一个包含以下层的 Web 应用程序:
我不确定在哪里放置错误处理。在 webAPI 控制器中,我应该只使用 try/catch 语句吗?可以在服务/存储库代码中抛出错误吗?除了一些友好的错误消息之外,我试图避免将任何数据传递给客户端。
业务错误应该在您的服务层中处理(例如,用户名之类的东西已经存在)。将 try/catch 语句放在所有控制器操作中可能会很快变得繁琐并导致重复代码。您可以查看custom error handling article
提供了在 Web API 中处理各种错误的示例,例如自定义错误过滤器(从ExceptionFilterAttribute
类派生并覆盖OnException
方法)。
您可以创建一个自定义异常类型,该类型将被 ExceptionFilter 或 http 模块拦截。它将设置 HTTP 状态代码和描述。可选地,它还可以返回带有错误数据的序列化对象。
其他异常类型将返回状态码 500。