美文网首页
NETCore异常处理的几种方式ExceptionFilter,

NETCore异常处理的几种方式ExceptionFilter,

作者: 醉酒的姑娘 | 来源:发表于2021-02-05 10:22 被阅读0次

    1、跳转页面

     //跳转错误页的方式
      app.UseExceptionHandler("/error");
    

    2.使用匿名委托来处理

    //匿名委托方式
    app.UseExceptionHandler(errApp=> {
                errApp.Run(async context => {
                    //逻辑异常处理
                });
            });
    

    3.1全局异常过滤器ExceptionFilter

    public class MyExceptionFilter : IExceptionFilter
    {
        public void OnException(ExceptionContext context)
        {
            throw new NotImplementedException();
        }
    }
    

    ConfigureServices 添加

    services.AddMvc(mvcOptions=> {
                mvcOptions.Filters.Add<MyExceptionFilter>();
            });
    

    3.2全局异常过滤器ExceptionFilterAttribute

     public class MyExceptionFilterAttribute: ExceptionFilterAttribute
    {
        //重写OnException
        public override void OnException(ExceptionContext context)
        {
            base.OnException(context);
            
        }
    }
    

    ConfigureServices 添加

    services.AddMvc(mvcOptions=> {
                mvcOptions.Filters.Add<MyExceptionFilterAttribute>();
            });
    

    异常过滤器的方式,他是作用在MVC的整个框架的体系下面,并不是在我们的中间件的最早期发上作用的,
    而是在MVC的整个生命周期里面去发生作用,也就是说他只能工作在MVC WEB API的请求周期里面,如果我们在MVC的中间件之前输出错误,他是没办法处理的
    应用场景:一般是我们需要对Controller进行特殊的异常处理

    ExceptionFilter 和 ExceptionFilterAttribute
    Attribute区别在于我们可以更细粒度的对我们的异常处理进行控制,我们可以指定部分的Controller或Exception,Attribute也可以在注册在全局,因为Attribute也实现了IExceptionFilter,如果注册在ConfigureServices 就不需要在Controller上标注Attribute

    相关文章

      网友评论

          本文标题:NETCore异常处理的几种方式ExceptionFilter,

          本文链接:https://www.haomeiwen.com/subject/aumsaktx.html