始终处理MVC API中的某些异常

时间:2012-11-29 21:36:31

标签: c# exception-handling asp.net-mvc-4

是否可以在给定异常的情况下始终处理我的API?在每个方法中,我都在捕获DbEntityValidationExceptions和ValidationExceptions。每个方法都以相同的方式实现这些捕获。有没有办法委托我的API或项目可以在任何时候抛出其中一个错误时使用的路由?

以下是每个方法的示例(同样,这是一个特定的APIController):

        try
        {
            //Do something
        }
        catch(ValidationException ex)
        {
            var errors = ErrorsAdd(new[] { ex.ValidationResult });
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, errors, _format));
        }
        catch (DbEntityValidationException ex)
        {
            var errors = ErrorsAdd(ex.EntityValidationErrors);
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, errors, _format));
        }

1 个答案:

答案 0 :(得分:2)

创建一个全局过滤器,处理这些异常并采取适当的行动。在默认的MVC站点中,应该已经有一个处理所有异常的ErrorFilter。除了只处理特定错误外,您可以创建一个类似的错误。