首页 > 其他分享 >.NetCore——全局异常过滤器ExceptionFilterAttribute

.NetCore——全局异常过滤器ExceptionFilterAttribute

时间:2023-09-03 20:33:06浏览次数:38  
标签:NetCore res ExceptionFilterAttribute loggerHelper context 过滤器 异常

.NetCore——全局异常过滤器ExceptionFilterAttribute
一、介绍
在我们的项目运行中,当程序出现异常的时候就会弹窗大黄页,所以为了更方便的解决这个问题,我们采用全局过滤器 ExceptionFilterAttribute 。通过它主动捕获程序中的异常,然后经过处理再抛出信息。下面咱们直接上干货,撸起来。
二、使用
首先创建一个 MyExceptionFilter 继承 ExceptionFilterAttribute 并重写 OnException方法。在方法中写自己处理逻辑,如图

 

public class MyExceptionFilter : ExceptionFilterAttribute
    {

        LoggerHelper _loggerHelper;

        public MyExceptionFilter(LoggerHelper loggerHelper)
        {
            _loggerHelper = loggerHelper;
        }

        public override void OnException(ExceptionContext context)
        {
            // 如果异常没有被处理则进行处理
            if (context.ExceptionHandled == false)
            {
                //定义返回信息
                Response res = new Response();
                res.Code = 500;
                res.Message = "发生错误,请联系管理员";

                //写入日志
                _loggerHelper.Error(context.HttpContext.Request.Path, context.Exception);

                context.Result = new ContentResult
                {
                    // 返回状态码设置为200,表示成功
                    StatusCode = StatusCodes.Status200OK,
                    // 设置返回格式
                    ContentType = "application/json;charset=utf-8",
                    Content = JsonConvert.SerializeObject(res)
                };
            }
            // 设置为true,表示异常已经被处理了
            context.ExceptionHandled = true;
        }
    }

下面在Startup的ConfigureServices方法中注册,添加到全局使用。如图

 这样就算完成了。下面开始测试是否可以使用

 再图中可以看到我写了一个GetTest的测试方法,并且new了一个异常,下面就看能不能捕获异常。在异常过滤器的方法中我有一个写入日志的动作,且有返回信息的处理。等调用完接口,看这两个地方就知道咱们的过滤器是否好用了。

 如图所示,现在返回信息是没有问题的。下面看一下日志中的记录

 通过日志文件的查看,发现异常过滤器已经生效了。

标签:NetCore,res,ExceptionFilterAttribute,loggerHelper,context,过滤器,异常
From: https://www.cnblogs.com/weiyibo/p/17675529.html

相关文章

  • .NetCore6 与 MySql 联查 (使用Lambda表达式树)
    MySql 官网链接:  https://www.donet5.com/Doc/99999999999/1180    2. 落实代码  or and 并且(满足所有条件) 或者(满足其中一个条件)  查询 OrIF !非空,查询  3. 联查表  官网找方法   4.落实  我这有一个字典表......
  • VS .NetCore 部署发布
    1.先安装IIS  步骤:  控制面板-程序和功能-启用或关闭Windows功能 确定 等待安装2.控制器右键点击发布3.点击发布  3.点击目标位置或者代开文件夹获取文件物理路径如图文件夹的路径所示  5. 复制刚才的物理路径   端......
  • .Net 6/NetCore3.1 Vue Element Uniapp前后端分离低代码快速开发框架
    .Net6/NetCoreVueElementUniapp前后端分离低代码快速开发框架这是一个能提高开发效率的开发框架,全自动生成PC与移动端(uniapp)代码;支持移动ios/android/h5/微信小程序。一、框架能做什么1、前后端分离项目2、纯后端项目3、移动端开发uni-app(IOS、Android、H5、微信小程......
  • 开源.NetCore通用工具库Xmtool使用连载 - HTTP请求篇
    【Github源码】《上一篇》介绍了Xmtool工具库中的XML操作类库,今天我们继续为大家介绍其中的HTTP请求类库。在现如今的软件需求场景中,HTTP网络请求几乎是开发过程中必然会使用的功能;而系统自带的HTTPClient对象使用起来并不是那么容易和友好,因此我们对其进行了二次封装成了一个We......
  • jquery 过滤器~查找方法
    过滤方法,指的是对所选元素进一步地筛选。查找方法,主要是以当前所选元素为基点,找到这个元素的父元素、子元素或兄弟元素。在jQuery中,对于查找方法,我们可以分为以下3种情况。(1)查找祖先元素。(2)查找后代元素。(3)查找兄弟元素。1.查找祖先元素在jQuery中,如果想要查找当前元素的......
  • js 过滤器~过滤方法
    在之前的学习中,我们接触了大量的选择器,包括基本选择器、伪类选择器等。为了更加方便快速地操作元素,除了选择器之外,jQuery还为我们提供了以“方法”(类似于函数方法)形式存在的两种方式:过滤方法和查找方法。过滤方法和查找方法跟之前学习的选择器之间是互补关系,它们补充了很多使用选......
  • 开源.NetCore通用工具库Xmtool使用连载 - XML操作篇
    【Github源码】《上一篇》介绍了Xmtool工具库中的发送短信类库,今天我们继续为大家介绍其中的XML操作类库。XML操作是软件开发过程中经常会遇到的情况;包括XML内容的遍历解析,或者特定值内容的查询获取等等。Xmtool工具库提供了一种更方便的方式对Xml进行遍历解析或者对特定节点内......
  • 开源.NetCore通用工具库Xmtool使用连载 - 发送短信篇
    【Github源码】《上一篇》介绍了Xmtool工具库中的发送邮件类库,今天我们继续为大家介绍其中的发送短信类库。发送短信就像发送邮件一样,在软件系统中使用非常普遍,甚至比发送邮件还要常见,有些甚至是软件标配功能;例如现在的短信验证码登录、通过短信找回密码等等。发送短信需要通过......
  • .NetCore WebAPI 导入、导出Excel文件 导入
    先下载一个NuGet包 在接口写方法//导入[HttpPost][Route("Import")]publicIActionResultImportExcel()//IFormFileformFile{try{varformFile=HttpContext.Request.Form.Files[0];//......
  • 路由的过滤器设置
             ......