博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC 异常Exception拦截器Fillter
阅读量:6088 次
发布时间:2019-06-20

本文共 2336 字,大约阅读时间需要 7 分钟。

异常信息的处理在程序中非常重要, 在asp.net mvc中提供异常属性拦截器进行对异常信息的处理,异常拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.FilterAttribute)和一个接口(System.Web.Mvc.IExceptionFilter),实现接口里面OnException方法。

代码实例:

异常拦截器类:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5  6 namespace AttributeDemo.Common 7 { 8     ///  9     /// 异常信息拦截器10     /// 11     public class ExceptionFillterAttribute : System.Web.Mvc.FilterAttribute, System.Web.Mvc.IExceptionFilter12     {13         #region 请求的action发生异常时会执行此方法14         /// 15         /// 请求的action发生异常时会执行此方法16         /// 17         /// 18         void System.Web.Mvc.IExceptionFilter.OnException(System.Web.Mvc.ExceptionContext filterContext)19         {20             //在这里你可以记录发生异常时你要干什么,比例写日志21             string message = filterContext.Exception.Message;22             filterContext.Controller.ViewData["ErrorMessage"] = message;23 24             //返回的结果给客户端25             filterContext.Result = new System.Web.Mvc.ContentResult()26             {27                 Content = "出错了:)",28                 ContentEncoding = System.Text.Encoding.UTF829             };30 31 32             filterContext.ExceptionHandled = true;  //告诉系统,这个异常已经处理了,不用再处理33 34             //filterContext.ExceptionHandled = false;  //告诉系统,这个异常没有处理,需要再处理 35         }36         #endregion37 38 39     }40 }

控制器类:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6  7 namespace AttributeDemo.Controllers 8 { 9     /// 10     /// 测试异常拦截器11     /// 12     [AttributeDemo.Common.ExceptionFillter]   //这个异常拦截属性写在这里表示对该控制器所有的action的异常都进行拦截13     public class ExceptionFillterTestController : Controller14     {15         //16         // GET: /ExceptionFillter/17 18         /// 19         /// 测试异常拦截20         /// 21         /// 
22 //[AttributeDemo.Common.ExceptionFillter] //这个异常拦截属性写在这里表示只对该action的异常信息进行拦截23 public ActionResult TestExceptionFillter()24 {25 int i = int.Parse("sd"); //这里故意引发异常进行测试26 return View();27 }28 29 public ActionResult Index()30 {31 return View();32 }33 34 }35 }

当请求action名称为TestExceptionFillter是时,action方法引发了异常,就会执行异常拦截类里面的OnException方法进行处理,处理结果请看下图:

转载于:https://www.cnblogs.com/linJie1930906722/p/5770180.html

你可能感兴趣的文章
Spring Core Container 源码分析三:Spring Beans 初始化流程分析
查看>>
vue项目优化--服务端渲染优化
查看>>
OneAPM大讲堂 | 谁更快?JavaScript 框架性能评测
查看>>
深入理解Node中可读流和可写流
查看>>
聊聊spring security的账户锁定
查看>>
new FormData() - FormData对象的作用及用法
查看>>
iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备
查看>>
好文推荐:javascript: 事件委托解析
查看>>
不会接口测试?如何使用eoLinker进行api接口测试
查看>>
通过地图图片生成可交互的地图
查看>>
php+ajax开发手机在线传输文本到电脑
查看>>
基本的隐写术:把任意文件隐藏在一张图片里
查看>>
javascript日期类型(Date)与php日期类型详解
查看>>
记一次vue开发环境搭建
查看>>
使用Jenkins进行持续部署(PHP代码)
查看>>
如何学习服务端开发—以代码工人的视角
查看>>
【219天】黑马程序员27天视频学习笔记【Day22复习脑图】
查看>>
基于 Electron 的爬虫框架 Nightmare
查看>>
弄清Classs,Symbols,Objects拓展 和 Decorators
查看>>
好文章必读 - 收藏集 - 掘金
查看>>