首页 > 其他分享 >异常过滤器

异常过滤器

时间:2023-08-18 21:23:13浏览次数:36  
标签:自定义 context 过滤器 logger 异常 public

一.什么是异常过滤器

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

相关文章

  • 全局异常过滤器
    在ASP.NETCore中,可以使用异常过滤器(ExceptionFilter)来捕获和处理应用程序中的异常。IExceptionFilter接口和IAsyncExceptionFilter接口都可以用来实现自定义的异常过滤器。首先,在WebApi中创建一个名为CustomExceptionFilter的实体类 在这个示例中,我们创建了一个名为......
  • 记一次重试机制和服务器响应慢导致的异常
    先说下异常是什么:正常情况下,我们的数据,axios返回后都是在res.data中的,于是项目里面常见的就是来个响应拦截,然后返回res.data。现在重试机制+服务器响应慢,会导致最后返回的数据直接就是res.data里面的内容了,你再.data,自然就有问题了解决:判断是否是axiosResponse对象,如果是,正常......
  • C++快速入门 第三十二讲:assert函数和捕获异常
    C语言和C++都有一个专门为调试而准备的工具函数---assert函数。这个函数是在assert.h库文件里定义的。实例1:assert函数应用1#include<cassert>2//assert()函数需要有一个参数,它将测试这个输入参数的真或者假状态3//如果为真Donothing4//如果为假Dosomething......
  • 【校招VIP】 java语言考点之异常
    考点介绍:导致程序的正常流程被中断的事件,叫做异常。异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。异常发生的原因有很多,通常包含以下几大类:1.用户输入了非法数据。2.要打开的文件不存在。3.网络通信时连接中断,或者JVM内存溢出。一、考点题目......
  • 钉钉机器人监控项目异常_JavaWeb实现
    在prod环境,项目所触发的运行时异常,developer往往无法第一时间得知讯息(在没有项目监控的前提下),为了解决这一问题,可以利用钉钉机器人监控项目异常,实时通知/警报给developer。1>自定义紧急异常EmergencyException2>在重要业务中产生的异常转换为此异常3>在全局异常捕获,针对此......
  • X710网卡LACP模式下ifdown网卡后交换机侧依然处于UP状态,导致网络通信异常
    以下配置属于临时配置,重启后失效,具体建议在bios或者固件中解决。主要包含两个配置:1、使用ifdown命令关闭网卡无法使linkdown,交换机侧依然认为端口UP进行流量转发,无法正常通信2、在某些环境中,LACP可能无法正常工作,这些环境要求将包含LCAP信息的LLDP帧转发到网络堆栈。#查看网卡......
  • python3-输入输出,File, OS, 错误和异常
     1. 输入输出,1.1输出 表达式语句print()函数。第三种方式是使用文件对象的write()方法,标准输出文件可以用sys.stdout引用。 输出格式美化如果你希望输出的形式更加多样,可以使用str.format()函数来格式化输出值。如果你希望将输出的值转成字符串,可以使用......
  • 【狂神说Java】Java零基础学习笔记-异常
    【狂神说Java】Java零基础学习笔记-异常异常01:Error和Exception什么是异常实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们......
  • laravel 后台或者api框架异常钉钉告警提醒
    中间件Monitor<?phpnamespaceApp\Http\Middleware;useError;useClosure;useException;useIlluminate\Http\Request;useIlluminate\Contracts\Container\Container;useIlluminate\Contracts\Debug\ExceptionHandler;usePsy\Exception\ErrorEx......
  • java获取异常的详细信息方法
    /**获取异常详细信息*/privateStringgetExceptionDetail(Exceptionex){Stringret=null;try{ByteArrayOutputStreamout=newByteArrayOutputStream();PrintStreampout=newPrintStream(out);ex.prin......