ASP.NET MVC自定义异常捕捉及处理

在日常开发中,经常会使用自定义异常传递业务逻辑验证消息,在ASP.NET MVC可采用重载 Controller 的 OnException 方法进行自定义异常的捕捉。

自定义异常类,用于承载业务逻辑验证信息,如下列代码所示:

1 using System;
2 
3 namespace Web
4 {
5     public class CustomException : ApplicationException
6     {
7         public CustomException(string message) : base(message) { }
8     }
9 }

自定义 ASP.NET MVC 控制器,重载 OnException 方法,核心部分在于获取自定义异常,将异常消息附加到 ModelState,并将 filterContext.ExceptionHandled 设置为 true,获取发送页面请求的 ActionName,并重新执行该 Action。最终验证信息可通过 Html.ValidationSummary() 显示出来。如下列代码所示:

 1 using System.Web.Mvc;
 2 using NLog;
 3 
 4 namespace Web
 5 {
 6     public class BaseController : Controller
 7     {
 8         private readonly Logger _logger = LogManager.GetCurrentClassLogger();
 9 
10         protected override void OnException(ExceptionContext filterContext)
11         {
12             var exception = filterContext.Exception;
13 
14             if (exception is CustomException)
15             {
16                 ModelState.AddModelError("", exception.Message);
17                 filterContext.ExceptionHandled = true;
18                 var actionName = RouteData.GetRequiredString("action");
19                 ActionInvoker.InvokeAction(filterContext.Controller.ControllerContext, actionName);
20             }
21             else
22             {
23                 _logger.ErrorException(exception.Message, exception);
24             }
25         }
26     }
27 }

演示代码如下列所示。

 1 using System.Web.Mvc;
 2 using Web.Models;
 3 
 4 namespace Web.Controllers
 5 {
 6     public class HomeController : BaseController
 7     {
 8         public ActionResult Index()
 9         {
10             return View(new Model());
11         }
12 
13         [HttpPost]
14         public ActionResult Index(Model model)
15         {
16             if (ModelState.IsValid)
17             {
18                 throw new CustomException("自定义异常消息。");
19             }
20 
21             return View(model);
22         }
23     }
24 }

详细代码可见点击下载附件

转载于:https://www.cnblogs.com/alancai/archive/2013/06/05/3119433.html

别再只调OpenCV参数了!手把手教你用Python bm3d库搞定图像去噪(附完整代码与效果对比) 本文详细介绍了BM3D算法在图像去噪中的高级应用,通过Python bm3d库实现超越OpenCV传统方法的去噪效果。文章包含完整代码示例、参数调优技巧及工程化应用场景,帮助开发者掌握这一被称为'传统方法天花板'的技术,显著提升图像信噪比和细节保留能力。 阅读详情

相关推荐

基于wxWidgets框架,使用DialogBlocks建立OpenGL界面

前言 之前公司要求使用wxWidgets做GUI,基于OpenGL图形内核,开发三维可视化工具。目前初步开发工作基本已经完成,剩下都是完善了。这里记录一下最开始的框架搭建过程(当然是简化版啦)。wxWidgets结合OpenGL开发可以实现跨平台应用,再结合CMake和VS Code,整体开发工具用习惯了会感觉非常顺手。 界面编辑 首先,使用DialogBlocks新建一个工程,这里工程目录...

cyberobot的博客 2726

ASP.NET MVC捕获异常

第一步: 在MVC中的Model中创建一个MyExceptionAttribute类,并继承HandleErrorAttribute类,重写HandleErrorAttribute类中的OnException方法(当程序出现异常时会执行OnException方法),此时OnException方法的参数filterContext封装了错误日志信息。 第二步: 当进入到OnExcepti

gxq_sd的博客 1040

基于java+springboot+vue+mysql的微信小程序线上水果店系统 源码+数据库(高分毕业设计).zip

项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。项目都经过严格调试,确保可以运行!可以放心下载技术组成语言:java开发环境:idea数据库:MySql5.7以上部署环境:maven数据库工具:navicat

Asp.NetMVC中的全局异常捕获以及自定义异常捕获

前言: 在项目中我们都会对项目里的异常进行处理,一方面是为了用户交互性更好,另一方面也为我们的后期的维护提供了便利。在项目的过程中也许我们更多的是用try{}catch{}进行捕获异常。在这里我给大家简单的介绍下我们在MVC中自带的一种捕获异常的机制,它就是:Asp.NetMVC的全局异常捕获MVC中的全局异常捕获简介: 全局异常捕获是微软在VS中自带的一种机制。在Asp.Net的MV...

GreyCastle的博客 4250

asp.net core 自定义全局异常处理的最佳几种方式

asp.net core 自定义异常处理 、UseExceptionHandler使用

天涯孤岸 1182

ASP.NET MVC 全局异常

先新建一个过滤器ExceptionHandleErrorAttribute.cs 内容如下: 1 using System; 2 using System.Net; 3 using System.Web; 4 using System.Web.Mvc; 5 using ABBPMP.Utility.NLogHelper.Static; 6 7 na...

diyabin8652的博客 250

asp.net core MVC 过滤器之ExceptionFilter过滤器(一)

简介 异常过滤器,顾名思义,就是当程序发生异常时所使用的过滤器。用于在系统出现未捕获异常时的处理。 实现一个自定义异常过滤器 自定义一个异常过滤器需要实现IExceptionFilter接口    public class HttpGlobalExceptionFilter : IExceptionFilter { public void OnExce...

weixin_30851867的博客 161

mvc源码解读(14)-mvc四大过滤器之ExceptionFilter

这一章我们主要来讲异常过滤器ExceptionFilter,废话多说,mvc3中默认的异常过滤器特性类是HandleErrorAttribute,该类的主要主要成员有: public Type ExceptionType{get;set} public string View { get {...

weixin_30611509的博客 155

28:NET5;ResourceFilter、ExceptionFilter、ResultFilter、策略Policy

目录ResourceFilterExceptionFilterResultFilterFilter执行链Exception在那些环节可以捕捉异常多种方式基于策略PolicyToken校验 ResourceFilter 为缓存而生的; ExceptionFilter ResultFilter Filter执行链 Exception在那些环节可以捕捉异常 控制器实例化异常 T 异常发生在Try-cache中 F 在视图中发生异常 F Service层发生异常 T 在actio

王永安的博客 724

C#中如何运用Filter过滤器

场景:需要记录日志、权限验证、异常捕获,如果让代码再重复编写 代码封装: public class MyActionFilterAttribute : ActionFilterAttribute { /// <summary> /// 执行前 /// </summary> /// <pa...

CWK445056007的专栏 9372

asp.net mvc ,asp.net mvc api 中使用全局过滤器进行异常捕获记录

MVC下的全局异常过滤器注册方式如下:标红为asp.net mvc ,asp.net mvc api 注册全局异常过滤器的同之处 using SuperManCore; using System.Web; using System.Web.Mvc; namespace SuperMan { public class FilterConfig { ...

weixin_33851429的博客 169

Asp.Net Core异常处理

本文将介绍在ASP.Net Core中处理异常的几种方法 1.使用开发人员异常页面(The developer exception page) 2 . 配置HTTP错误代码页 Configuring status code pages 3. 使用MVC过滤器 ExceptionFilter 4. 自定义异常捕获中间件 Middleware 一使用开发人员异常页面(The develo...

ailanzhe的博客 7728

C# Asp.Net6 MVC,Log4net NLog 日志插件应用 及Windows、Liux环境下程序发布

asp.net 6.0 学习 视频地址https://ke.qq.com/course/453197/12564772206078541#term_id=100542158

liyonghewangtao的博客 1316

asp.net mvc 简单使用 NLog

之前项目里面用的是Log4.net , 觉得配置文件挺复杂的。 新的这个项目里 , 我用了NLog ,本人菜鸟,写错请见谅。 首先引用Nuget 工具里面引入 NLog 和

罗汉松驻扎的工作基地 772

asp.net core mvc 框架搭建十、NLog 的使用【干货教程】

之前的项目用过。 懒得记,这次的新项目又用到了记录一下。 方便大家学习使用。 第一步 添加 NLog的引用 第二步 添加NLogHelper类,封装要使用的日志类型。 using NLog;//添加引用 第三步 添加NLog.config文件,配置使用 第四步 调用日志函数。 ...

maliangdyx1的博客 559

ASP.NET Core MVC 项目 NLog

NLog是一个帮助程序员将日志信息输出的工具,它定义了多种日志信息输出模式,可以根据需要将日志输出到控制台,文本文件,Excel文件、Windows日志事件查看器中,包括数据库,邮件等等位置,以便我们快速跟踪程序Bug。

Vin Cente 1542

ASP.NET MVC中的统一化自定义异常处理

ASP.NET MVC程序出现了异常,怎么处理更加规范? 1. 最简单的方法是设置节点 节点用于定义一些自定义错误信息的信息。此节点有Mode和defaultRedirect两个属性,其中defaultRedirect属性是一个可选属性,表示应用程序发生错误时重定向到的默认URL,如果没有指定该属性则显示一般性错误。Mode属性是一个必选属性,它有三个可能值,它们所代表的意义分别如下: On

小牛牛的专栏 1523

ASP.NET MVC的最佳日志记录库

目录 介绍 4个日志记录库 log4net Log4net记录文本文件中 Log4net记录到数据库中 NLOG Nlog日志记录在文本文件中 NLog日志记录到数据库中 Serilog Serilog记录到文本文件中 Serilog记录到数据库中 Serilog.Settings.AppSettings ELMAH ELMAH记录数据库 在本文中,我们...

寒冰屋的专栏 5824

Asp.net自定义异常页面

Asp.net自定义异常页面  按异常处理优先级排序  (0)在Global.asax的Application_Error添加代码    protected void Application_Error(Object sender, EventArgs e)     {         Context.ClearError();        Response.Write("Error")

l_hui_p_cn的专栏 817

Asp.net Web Api开发(第三篇)自定义异常过滤器

Asp.net Web Api开发(第三篇)自定义异常过滤器

一叶知秋 7270
上一篇: 大数乘法算法
下一篇: Windows 10 Desktop.ini 合集
dengri8870
博客等级 码龄9年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值