异常过滤器—MVC中异常过滤器使用

这篇具有很好参考价值的文章主要介绍了异常过滤器—MVC中异常过滤器使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是异常过滤器?

异常过滤器(Exception Filters)是 ASP.NET Core 中用于处理全局异常的机制。它们允许你在发生异常时捕获、处理和记录异常,并提供自定义的异常处理逻辑。异常过滤器在整个应用程序范围内生效,可以用于处理各种异常情况。用于实现常见的错误处理策略,没有之前和之后事件,处理 Razor 页面或控制器创建、模型绑定、操作过滤器或操作方法中发生的未经处理的异常。但无法捕获资源过滤器、结果过滤器或 MVC 结果执行中发生的异常 。
异常过滤器—MVC中异常过滤器使用

二、异常过滤器实现

异常过滤器定义:

异常过滤器的定义,需要实现接口IExceptionFilter 或者IAsyncExceptionFilter,该接口包含一个 OnException 方法或者OnExceptionAsync方,用于处理发生的异常,继承后重写此方法。

#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 创建者:码农阿亮
 * 创建时间:2023/8/15 14:02:01
 * 版本:V1.0.0
 * 描述:
 *
 * ----------------------------------------------------------------
 * 修改人:
 * 时间:
 * 修改说明:
 *
 * 版本:V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using System;

namespace MyWebApp.Filter
{
    /// <summary>
    /// 异常过滤器
    /// </summary>
    public class ExceptionFilter : Attribute, IExceptionFilter
    {
        /// <summary>
        /// 没有之前和之后事件,当程序发生没有捕获的异常时候执行
        /// </summary>
        /// <param name="context"></param>
        public void OnException(ExceptionContext context)
        {
            //异常信息
            var ex = context.Exception;
            //这里可以写入异常日志到数据库、文件或者控制台
            Console.WriteLine("错误信息:"+ex.Message);

            /*
             * 方便测试,此处将错误日志信息返回
             */
            context.Result = new ContentResult()
            {
                Content = ex.Message,
                ContentType = "text/html"
            };

        }
    }
}

添加到全局过滤器:

    services.AddMvc(options =>
        {
            //异常过滤器
           options.Filters.Add<ExceptionFilter>();
        });

添加测试Action:

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;

namespace MyWebApp.Controllers
{
   [Route("api/[controller]")]
   [ApiController]
   public class ExceptionFilterController : ControllerBase
   {

       /// <summary>
       /// 测试:手动抛出一个未捕获异常
       /// </summary>
       /// <returns></returns>
       [HttpGet]
       public ActionResult Test()
       {
           throw new Exception("Oh,My God,A Exception Occurred......");
       }
   }
}

三、验证:

接口Action访问调用:

访问地址:

https://localhost:5001/ExceptionFilter/Test

控制台输出异常信息:
异常过滤器—MVC中异常过滤器使用

调用接口时异常过滤器返回异常:
异常过滤器—MVC中异常过滤器使用文章来源地址https://www.toymoban.com/news/detail-649135.html

到了这里,关于异常过滤器—MVC中异常过滤器使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 5.使用日志+自定义全局异常过滤器

    5.使用日志+自定义全局异常过滤器

    刚开始写文章,封装Base基类的时候,添加了trycatch异常块,不过当时没有去记录日志,直接return了。有小伙伴劝我不要吃了Exception  其实没有啦,项目刚开始,我觉得先做好整体结构比较好。像是盖楼一样。先把楼体建造出来,然后再一步一步的美化完善。 基础的仓储模式已

    2024年02月08日
    浏览(8)
  • 【ASP.NET Core】MVC过滤器:运行流程

    【ASP.NET Core】MVC过滤器:运行流程

    MVC 的过滤器(Filters)也翻译为“筛选器”。但是老周更喜欢翻译为“过滤器”,意思上更好理解。 既然都叫过滤器了,就是在MVC的操作方法调用前后进行特殊处理的类型。比如: a、此调用是否已授权? b、在模型绑定之前要不要修改数据源?(可能含有儿童不宜的数据)

    2024年02月05日
    浏览(12)
  • 【ASP.NET Core】MVC过滤器:常见用法

    【ASP.NET Core】MVC过滤器:常见用法

    前面老周给大伙伴们演示了过滤器的运行流程,大伙只需要知道下面知识点即可: 1、过滤器分为授权过滤、资源访问过滤、操作方法(Action)过滤、结果过滤、异常过滤、终结点过滤。上一次咱们没有说异常过滤和终结点过滤,不过老周后面会说的。对这些过滤器,你有印

    2024年02月05日
    浏览(9)
  • NestJS 的 异常过滤器学习

    NestJS 带有一个内置的异常层,负责处理应用程序中所有未处理的异常。当应用程序代码未处理异常时,该层会捕获异常,然后自动发送对应的异常响应给用户。 在 NestJs 中默认异常过滤器为 HttpException 及其子类,当异常无法不属于 HttpException 或者子类的时候,内置的异常过滤

    2024年02月14日
    浏览(10)
  • Spring MVC获取参数和自定义参数类型转换器及编码过滤器

    Spring MVC获取参数和自定义参数类型转换器及编码过滤器

    目录   一、使用Servlet原生对象获取参数 1.1 控制器方法 1.2 测试结果 二、自定义参数类型转换器 2.1 编写类型转换器类 2.2 注册类型转换器对象  2.3 测试结果  三、编码过滤器 3.1 JSP表单 3.2 控制器方法 3.3 配置过滤器 3.4 测试结果  往期专栏文章相关导读  1. Maven系列专

    2024年02月10日
    浏览(10)
  • 登录页面jwt密钥,过滤器,拦截器,异常处理

    需求: 用户未登录时,访问其他也没面,操作添加、删除等操作时,强行跳转至登录页面。 实现方法: 1.使用Cookie,登录后后端添加一个cookie,每次页面判断是否有cookie, 2。使用session,原理同上,只不过session是存储在服务器里的,cookie是在浏览器里。 3。使用jwt令牌,登

    2023年04月25日
    浏览(10)
  • 过滤器(Filter)和拦截器(Interceptor)有什么不同?

    过滤器(Filter)和拦截器(Interceptor)有什么不同?

    过滤器(Filter)和拦截器(Interceptor)是用于处理请求和响应的中间件组件,但它们在实现方式和应用场景上有一些不同。 过滤器 是Servlet规范中定义的一种组件,通常以Java类的形式实现。过滤器通过在 web.xml 配置文件中声明来注册,并在Web应用程序的请求和响应链中拦截请

    2024年02月07日
    浏览(9)
  • Spring Security 中的过滤器链是什么?它的作用是什么

    Spring Security 中的过滤器链是什么?它的作用是什么

    Spring Security是一个安全框架,它提供了强大的安全保护功能,可以帮助开发者更加方便地实现应用程序的安全性。Spring Security中的过滤器链是其中一个非常重要的部分,它起到了非常重要的作用。本文将介绍什么是Spring Security中的过滤器链,以及它的作用和如何使用它。同时

    2024年02月06日
    浏览(9)
  • 75.SpringMVC的拦截器和过滤器有什么区别?执行顺序?

    75.SpringMVC的拦截器和过滤器有什么区别?执行顺序?

    拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 拦截器只能对action请求(DispatcherServlet 映射的请求)起作用,而过滤器则可以对几乎所有的请求起作用。 拦截器可以访问容器中的Bean(DI),而过滤器不能访问(基于spring注册的过滤器也可以访问容器中的bean)。 过滤器 和 拦

    2024年02月22日
    浏览(9)
  • springboot使用过滤器

    过滤器是处于客户端与服务器资源文件之间的一道过滤网,帮助我们过滤一些不符合要求的请求。通常用作 Session校验,判断用户权限。 使用过滤器很简单,只需要实现Filter类,然后重写它的3个方法即可。 init方法:程序启动调用Filter的init()方法(永远只调用一次);在容器中

    2024年02月15日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包