异常过滤器

一.什么是异常过滤器

异常过滤器是 .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日志中

 

posted @   IAMLCW  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示