MVC与WebApi中的异常统一处理
时间: 2024-05-15 20:12:54 浏览: 106
跨域问题解决细节-教你如何6秒钟往mysql插入100万条数据的实现
在MVC和WebApi中,都可以通过统一的异常处理机制来处理应用程序中的异常情况。以下是一个简单的实现方式:
1. 在Global.asax.cs文件中的Application_Start方法中注册异常处理机制:
```
protected void Application_Start()
{
// 注册异常处理机制
GlobalConfiguration.Configuration.Filters.Add(new CustomExceptionFilterAttribute());
}
```
2. 创建一个自定义的异常过滤器CustomExceptionFilterAttribute,继承于ActionFilterAttribute,并重写OnException方法,用于统一处理异常:
```
public class CustomExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
// 获取异常信息
var exception = context.Exception;
// 处理异常情况
if (exception is NotImplementedException)
{
context.Response = new HttpResponseMessage(HttpStatusCode.NotImplemented);
}
else if (exception is ArgumentException)
{
context.Response = new HttpResponseMessage(HttpStatusCode.BadRequest);
}
else
{
context.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
}
context.Response.Content = new StringContent(exception.Message);
}
}
```
3. 在控制器中抛出异常:
```
public IHttpActionResult Get(int id)
{
if (id == 0)
{
throw new ArgumentException("id不能为0");
}
return Ok("value");
}
```
当控制器中的Get方法中的id参数为0时,会抛出ArgumentException异常,进而被CustomExceptionFilterAttribute捕获并处理。最终返回的结果是一个BadRequest状态码和异常信息。
以上就是MVC和WebApi中的异常统一处理的简单实现方式。
阅读全文