我们可以使用过滤器来全局捕获异常,
创建一个过滤器,ExceptionHandleFilter
让它继承 IExceptionFilter 它也有异步版本 IAsyncExceptionFilter
我这里使用的是非异步的版本
实现其OnException方法
即可利用其形式参数ExceptionContext进行异常处理,
最后返回出去的结果,通过context.Result进行修改即可
public class ExceptionHandleFilter : IExceptionFilter
{
public void OnException(ExceptionContext context)
{
context.Result = ApiRt.FailMsg("异常处理器捕获异常");
}
}
写完这个类之后,还需要在Program.cs中对方法进行注册
builder.Services.AddControllers(opt =>
{
opt.Filters.Add(new ExceptionHandleFilter());
});
搞定。