首页 DotNet Net8添加全局异常过滤器

Net8添加全局异常过滤器

2024-08-04 11:03 编辑:  丽丽学习网

一、 新建一个帮助类, ExceptionFilterAttribute.cs , 使其继承于属性和异常接口,Attribute, IExceptionFilter

/// <summary>
/// 全局异常过滤器
/// </summary>
public class ExceptionFilterAttribute : Attribute, IExceptionFilter
{
    /// <summary>
    /// OnException
    /// </summary>
    /// <param name="context"></param>
    /// <exception cref="NotImplementedException"></exception>
    public void OnException(ExceptionContext context)
    {
        var msg = context.Exception.Message;
        //这里如果不想显示特定的错误给前台调用者, 可以定制错误输出到前台调用者
        if (msg.Contains("SqlServer"))
        {
            Console.WriteLine(msg);
            msg = "连接数据库失败";
        }
        //MyResults 是统一返回结果的格式类,自行建立一个。
        context.Result = new JsonResult(MyResults.FailResult(msg));
    }
}

二、进入Program.cs里添加全局过滤器

//里面添加全局过滤器
builder.Services.AddControllers(p => {
    //全局异常过滤器
    p.Filters.Add<ExceptionFilterAttribute>();
});

这样再异常时输出的格式就统一了