异常过滤器
一.什么是异常过滤器
异常过滤器是 .NET Core 中一种用于处理全局异常的机制。 它可以在代码发生异常时捕获、处理和记录异常,并提供自定义的异常处理逻辑,把异常报错自定义。 异常过滤器在整个程序的范围内生效,可以用于处理各种异常情况。
二.异常过滤器的使用
定义异常过滤器要继承接口IExceptionFilter或者IAsyncExceptionFilter,IAsyncExceptionFilter支持异步,包含一个OnExceptionAsync方法,处理发生的异常
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; namespace Day0818.WebAPI { public class MyExceptionFilter : IAsyncExceptionFilter { private readonly ILogger<MyExceptionFilter> logger; public MyExceptionFilter(ILogger<MyExceptionFilter> logger) { this.logger = logger; } public Task OnExceptionAsync(ExceptionContext context) { if (!context.ExceptionHandled) { context.Result = new ContentResult() { Content = "服务器异常请稍后再试...." }; logger.LogError("全局异常记录到Nlog日志==>" + context.Exception.Message); } context.ExceptionHandled = true; return Task.CompletedTask; } } }
添加全局异常过滤器
//全局异常过滤器 builder.Services.AddControllers(x => { x.Filters.Add<MyExceptionFilter>(); });
然后写一个测试接口
/// <summary> /// 异常测试 /// </summary> /// <param name="i"></param> /// <returns></returns> [HttpGet] public IActionResult TryExceptionFilter(int i=0) { return Ok(1 / i); }
然后报错后就可以把错误自定义并且记录到Nlog日志中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?