ASP.NET MVC 异常Exception拦截器Fillter

异常信息的处理在程序中非常重要, 在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     /// <summary>
 9     /// 异常信息拦截器
10     /// </summary>
11     public class ExceptionFillterAttribute : System.Web.Mvc.FilterAttribute, System.Web.Mvc.IExceptionFilter
12     {
13         #region 请求的action发生异常时会执行此方法
14         /// <summary>
15         /// 请求的action发生异常时会执行此方法
16         /// </summary>
17         /// <param name="filterContext"></param>
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.UTF8
29             };
30
31
32             filterContext.ExceptionHandled = true;  //告诉系统,这个异常已经处理了,不用再处理
33
34             //filterContext.ExceptionHandled = false;  //告诉系统,这个异常没有处理,需要再处理
35         }
36         #endregion
37
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     /// <summary>
10     /// 测试异常拦截器
11     /// </summary>
12     [AttributeDemo.Common.ExceptionFillter]   //这个异常拦截属性写在这里表示对该控制器所有的action的异常都进行拦截
13     public class ExceptionFillterTestController : Controller
14     {
15         //
16         // GET: /ExceptionFillter/
17
18         /// <summary>
19         /// 测试异常拦截
20         /// </summary>
21         /// <returns></returns>
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方法进行处理,处理结果请看下图:

时间: 2024-10-27 13:35:51

ASP.NET MVC 异常Exception拦截器Fillter的相关文章

asp.net mvc中的拦截器

在ASP.NET MVC中,有三种拦截器:Action拦截器.Result拦截器和Exception拦截器,所谓的拦截器也没有什么的,只是写一个类,继承另一个类和一个接口,顺便实现接口里面的方法而以拉!下面我们一一实现! public class ExceptionFillters : FilterAttribute,IExceptionFilter    {        //发生异常时会执行这段代码        public void OnException(ExceptionContex

ASP.NET MVC的Action拦截器(过滤器)ActionFilter

有时项目要进行客户端请求(action)进行拦截(过滤)验证等业务,可以使用拦截器进行实现,所谓的action拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.FilterAttribute)和一个接口(System.Web.Mvc.IActionFilter),至于什么是拦截器这里就不说了,网上很多关于这方面文章. 假如现在有这样的一个需求:某个action需要登录才能进行访问,可以使用action属性拦截器进行拦截进行验证 多余的不说了直接上代码 写一个拦截器类:

Spring MVC中的拦截器/过滤器HandlerInterceptorAdapter的使用

一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的 而在Spring中,基于Filter这种方式可以实现Bean预处理.后处理. 比如注入FilterRegistrationBean,然后在这个Bean上传递自己继承Filter实现的自定义Filter进入即可. 而Spring MVC也有拦截器,不仅可实现Filter的所有功能,还可以更精确的控制拦截精度. Spring MVC提供的org.springframework.web.servlet.handler.HandlerInt

spring mvc 方法注解拦截器

应用场景,在方法级别对本次调用进行鉴权,如api接口中有个用户唯一标示accessToken,对于有accessToken的每次请求可以在方法加一个拦截器,获得本次请求的用户,存放到request或者session域. python中,之前在python flask中可以使用装饰器来对方法进行预处理,进行权限处理 先看一个实例,使用@access_required拦截: @api.route('/post_apply') @access_required def apply():     "&q

Struts2拦截器之ExceptionMappingInterceptor(异常映射拦截器)

一.异常拦截器是什么? 异常拦截器的作用是提供一个机会,可以设置在action执行过程中发生异常的时候映射到一个结果字符串而不是直接中断. 将异常整合到业务逻辑中,比如在分层系统的调用中可以从底层抛出一个异常,高层捕捉到这个异常就知道发生了什么事情啦. 二.如何使用? 1.两种异常映射类型: 1.1.global global的异常映射对整个package下的action都有效: <struts> <package name="default" namespace=&

spring mvc中的拦截器小结 .

在spring mvc中,拦截器其实比较简单了,下面简单小结并demo下. preHandle:预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器(如我们上一章的Controller实现):      返回值:true表示继续流程(如调用下一个拦截器或处理器):              false表示流程中断(如登录检查失败),不会继续调用其他的拦截器或处理器,此时我们需要通过response来产生响应: postHandle:后处理回调方法,实现处理器的后处理(但在渲

spring mvc 能过拦截器记录请求数据和响应数据

spring mvc 能过拦截器记录请求数据记录有很多种方式,主要有以下三种: 1:过滤器 2:HandlerInterceptor拦截器 3:Aspect接口控制器 但是就我个人所知要记录返回的数据,只能通过Aspect处理,以下是实现此需要的代码 package com.qmtt.config; import java.util.Arrays; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annot

详述 Spring MVC 框架中拦截器 Interceptor 的使用方法

1 前言 昨天新接了一个需要,"拦截 XXX,然后 OOO",好吧,说白了就是要用拦截器干点事(实现一个具体的功能).之前,也在网络上搜了很多关于Interceptor的文章,但感觉内容都大同小异,而且知识点零零散散,不太方便阅读.因此,正好借此机会,整理一篇关于拦截器的文章,在此分享给大家,以供大家参考阅读. 2 拦截器 2.1 概念 Java 里的拦截器是动态拦截 action 调用的对象.它提供了一种机制可以使开发者可以定义在一个 action 执行的前后执行的代码,也可以在一个

Spring MVC中的拦截器Interceptor

谈谈spring中的拦截器 在web开发中,拦截器是经常用到的功能.它可以帮我们验证是否登陆.预先设置数据以及统计方法的执行效率等等.今天就来详细的谈一下spring中的拦截器.spring中拦截器主要分两种,一个是HandlerInterceptor,一个是MethodInterceptor. 一,HandlerInterceptor拦截器 HandlerInterceptor是springMVC项目中的拦截器,它拦截的目标是请求的地址,比MethodInterceptor先执行.实现一个Ha