打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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

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

1 using System;2 3 namespace Web4 {5     public class CustomException : ApplicationException6     {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             else22             {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 }

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ASP.NET MVC 过滤器(五)
MVC 自定义AuthorizeAttribute实现权限管理
asp.net Core 中AuthorizationHandler 实现自定义授权
asp.net mvc
ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
玩转Asp.net MVC 的八个扩展点(上)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服