一.什么是异常过滤器
异常过滤器是 .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日志中
标签:自定义,context,过滤器,logger,异常,public From: https://www.cnblogs.com/iamlcw/p/17641535.html