MVC异常处理详解
发布时间 - 2026-01-11 01:46:42 点击率:次在日常开发中,我们会去捕捉很多的异常,来进行处理,通常我们的方法就是,在需要进行异常处理的地方加上 try catch 块,但是,如果需要异常处理的地方很多,那么,就会频繁的去写try catch 块,对于我们天生‘懒惰' 的程序员来说,总想找一个捷径。于是,就会有全局异常处理,那么,今天,我们就来看看在MVC中怎么进行全局异常处理的。

一、MVC框架自己的全局异常处理
在MVC中,框架已经给我们一共了一套全局异常处理的特性类HandleErrorAttribute类。我们可以在MVC中的App_Start文件夹中的FilterConfig.cs文件中找到这么一行代码
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
这个就是实例化一个HandleErrorAttribute类,放到过滤器中。然后我们的Views>Shared文件夹中有一个Error.cshtml的页面,其中,该页面里的Model的类型为System.Web.Mvc.HandleErrorInfo,这个是MVC框架已经给我写好了的,我们可以直接拿来用。
在Error.cshtml页面中,我们可以做进一步处理,来显示错误信息,根据需求来展示错误信息。这些错误信息都会在System.Web.Mvc.HandleErrorInfo类中的某些属性中找到的。
例如:一下是Error.cshtml。
我们在Control中,故意写一个异常出来:
public class HomeController : Controller
{
public ActionResult Index()
{
string i = "12a";
int j = Convert.ToInt32(i);
return View();
}
}
运行一下,我们来看一下结果。
以上就是运行的结果,我们可以看到,System.Web.Mvc.HandleErrorInfo类还是有很多丰富的属性的,我们可以直接拿来用。
MVC自带的这套异常处理默认的是处理错误码为500系列的异常,如果是404,就不会走这个了。不过,我们可以通过Web.config文件的设置,来进行处理。看我们如何处理的。
首先,我们先将Error.cshtml页补充完整,先给他加一个Control,然后,我们再写一个专门处理404的View和Control。如下
namespace Exception.Controllers
{
public class SharedController : Controller
{
// GET: Shares
public ActionResult Error()
{
return View();
}
public ActionResult NotFondError()
{
return View();
}
}
}
页面:
然后我们在浏览器地址中写一个错误的地址,看一下结果:
二、重写MVC中的异常处理
在开发中,我们经常有这么一个需求,我们需要将异常通过文本日志的方式记录下来并保存,那么MVC自带的异常处理方式System.Web.Mvc.HandleErrorInfo没有这么一个功能,那么我们通过重写的方式来让它有这个功能。下面,我们来看看如何重写。
首先我们建一个类,让这个类继承System.Web.Mvc.HandleErrorInfo,然后重写System.Web.Mvc.HandleErrorInfo中的虚方法:OnException方法。
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
var err = filterContext.Exception.Message;//错误内容
//=============================
//将错误记录到日志中
//=============================
}
}
然后,将FilterConfig.cs加入:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new CustomHandleErrorAttribute());
}
}
这样,我们就可以完成我们的需求了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# MVC
# 异常处理
# asp.net core MVC 全局过滤器之ExceptionFilter过滤器(1)
# Asp.net Mvc 身份验证、异常处理、权限验证(拦截器)实现代码
# 详解使用Spring MVC统一异常处理实战
# springboot springmvc抛出全局异常的解决方法
# ASP.NET MVC异常处理模块详解
# ASP.NET MVC下基于异常处理的完整解决方案总结
# ASP.NET mvc异常处理的方法示例介绍
# 基于SpringMVC的全局异常处理器介绍
# ASP.NET MVC中异常处理&自定义错误页详析
# ASP.NET MVC中异常Exception拦截的深入理解
# 我们可以
# 重写
# 错误信息
# 自带
# 来用
# 自己的
# 的是
# 就会
# 给我
# 中找到
# 夹中
# 有很多
# 给他
# 给我们
# 会在
# 看我
# 可以看到
# 来看看
# 让它
# 看一下
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用美橙互联一键搭建多站合一网站?
开心动漫网站制作软件下载,十分开心动画为何停播?
JS弹性运动实现方法分析
Laravel如何使用Livewire构建动态组件?(入门代码)
如何在云服务器上快速搭建个人网站?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
浅述节点的创建及常见功能的实现
php json中文编码为null的解决办法
在线制作视频网站免费,都有哪些好的动漫网站?
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
Laravel如何处理文件下载请求?(Response示例)
零基础网站服务器架设实战:轻量应用与域名解析配置指南
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
原生JS获取元素集合的子元素宽度实例
南京网站制作费用,南京远驱官方网站?
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
JavaScript模板引擎Template.js使用详解
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
如何在阿里云购买域名并搭建网站?
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
如何在自有机房高效搭建专业网站?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
如何自定义建站之星网站的导航菜单样式?
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
如何解决hover在ie6中的兼容性问题
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
免费网站制作appp,免费制作app哪个平台好?
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
网站建设要注意的标准 促进网站用户好感度!
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Android 常见的图片加载框架详细介绍
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何快速启动建站代理加盟业务?
北京企业网站设计制作公司,北京铁路集团官方网站?
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
Linux网络带宽限制_tc配置实践解析【教程】
php在windows下怎么调试_phpwindows环境调试操作说明【操作】

