简介

异常过滤器,顾名思义,就是当程序发生异常时所使用的过滤器。用于在系统出现未捕获异常时的处理。
实现一个自定义异常过滤器
自定义一个全局异常过滤器需要实现IExceptionFilter接口
public class HttpGlobalExceptionFilter : IExceptionFilter
{
public void OnException(ExceptionContext context)
{
throw new NotImplementedException();
}
}
IExceptionFilter接口会要求实现OnException方法,当系统发生未捕获异常时就会触发这个方法。OnException方法有一个ExceptionContext异常上下文,其中包含了具体的异常信息,HttpContext及mvc路由信息。系统一旦出现未捕获异常后,比较常见的做法就是使用日志工具,将异常的详细信息记录下来,方便修正调试。下面是日志记录的实现。
/// <summary>
/// 全局异常过滤器
/// </summary>
public class HttpGlobalExceptionFilter : IExceptionFilter
{
readonly ILoggerFactory _loggerFactory;
readonly IHostingEnvironment _env;
public HttpGlobalExceptionFilter(ILoggerFactory loggerFactory, IHostingEnvironment env)
{
_loggerFactory = loggerFactory;
_env = env;
}
public void OnException(ExceptionContext context)
{
var logger = _loggerFactory.CreateLogger(context.Exception.TargetSite.ReflectedType);
logger.LogError(new EventId(context.Exception.HResult),
context.Exception,
context.Exception.Message);
var json = new ErrorResponse("未知错误,请重试");
if (_env.IsDevelopment()) json.DeveloperMessage = context.Exception;
context.Result = new ApplicationErrorResult(json);
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
context.ExceptionHandled = true;
}
public class ApplicationErrorResult : ObjectResult
{
public ApplicationErrorResult(object value) : base(value)
{
StatusCode = (int)HttpStatusCode.InternalServerError;
}
}
public class ErrorResponse
{
public ErrorResponse(string msg)
{
Message = msg;
}
public string Message { get; set; }
public object DeveloperMessage { get; set; }
}
注册全局过滤器
过滤器已经编写完毕,接下来就需要在asp.net core MVC中注册。找到系统根目录Startup.cs文件,修改ConfigureServices方法如下
services.AddMvc(options =>
{
options.Filters.Add<HttpGlobalExceptionFilter>();
});
测试
在请求中抛出一个异常
日志正确捕获到异常信息
浏览器返回500错误,并且返回自定义的错误信息。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# asp.net
# core
# MVC
# 过滤器
# ExceptionFilter
# ASP.NET Core MVC中过滤器工作原理介绍
# ASP.NET Core MVC 过滤器(Filter)
# ASP.NET Core MVC 过滤器的使用方法介绍
# asp.net core MVC 过滤器之ActionFilter过滤
# ASP.NET Core MVC过滤器运行流程解析
# 自定义
# 时就
# 顾名思义
# 错误信息
# 抛出
# 大家多多
# 有一个
# 方法如下
# 包含了
# 请重试
# _env
# _loggerFactory
# IHostingEnvironment
# gt
# summary
# ILoggerFactory
# readonly
# loggerFactory
# TargetSite
# Exception
相关文章:
宝塔建站助手安装配置与建站模板使用全流程解析
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
股票网站制作软件,网上股票怎么开户?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何在万网ECS上快速搭建专属网站?
大型企业网站制作流程,做网站需要注册公司吗?
如何快速搭建高效简练网站?
如何制作一个表白网站视频,关于勇敢表白的小标题?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
,有什么在线背英语单词效率比较高的网站?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
Swift中swift中的switch 语句
英语简历制作免费网站推荐,如何将简历翻译成英文?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
Java解压缩zip - 解压缩多个文件或文件夹实例
装修招标网站设计制作流程,装修招标流程?
青岛网站建设如何选择本地服务器?
威客平台建站流程解析:高效搭建教程与设计优化方案
官网网站制作腾讯审核要多久,联想路由器newifi官网
c++怎么用jemalloc c++替换默认内存分配器【性能】
建站之星2.7模板:企业网站建设与h5定制设计专题
金*站制作公司有哪些,金华教育集团官网?
焦点电影公司作品,电影焦点结局是什么?
定制建站价位费用解析与套餐推荐全攻略
微信小程序 五星评分(包括半颗星评分)实例代码
如何通过商城免费建站系统源码自定义网站主题?
网站设计制作企业有哪些,抖音官网主页怎么设置?
网站制作公司,橙子建站是合法的吗?
如何在阿里云服务器自主搭建网站?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站主机是否等同于虚拟主机?
如何在IIS中新建站点并配置端口与物理路径?
如何在阿里云完成域名注册与建站?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何解决VPS建站LNMP环境配置常见问题?
设计网站制作公司有哪些,制作网页教程?
建站主机选购指南:核心配置优化与品牌推荐方案
定制建站如何定义?其核心优势是什么?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何用好域名打造高点击率的自主建站?
红河网站制作公司,红河事业单位身份证如何上传?
盐城做公司网站,江苏电子版退休证办理流程?
动图在线制作网站有哪些,滑动动图图集怎么做?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
高防服务器:AI智能防御DDoS攻击与数据安全保障
建站之星如何通过成品分离优化网站效率?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
如何在云主机上快速搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。