HandleErrorAttribute继承自FilterAttribute,且实现了IExceptionFilter接口。

属于AOP思想的一种实现,MVC的四大筛选器(权限,动作,结果,异常)中的异常处理。

Points:

1)ExceptionHandled为true,表明异常已经处理,不再被拦截;反之,可能被再次拦截;

2)通过设置ExceptionContext的Result(ActionResult类型)属性,表明结束当前请求

Usage

1.创建自定义异常处理

public class AppHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
var json = new JsonResponse();
json.success = false;
var ex = filterContext.Exception;
//deal custom exception…
json.message = "系统异常,请联系管理员!";
string msg = string.Format("系统异常:{0}", ex.Message);
LogHelper.Error(msg, ex); //Log4jNet filterContext.ExceptionHandled = true;
var result = new JsonResult();
result.Data = json;
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
filterContext.Result = result; #region Sample Segment(样例)
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
JsonResult jsonResult = new JsonResult()
{
Data = ""
}; LogHelper.Error(filterContext.Exception.Message); filterContext.Result = jsonResult;
}
else
{
filterContext.Result = new RedirectResult("Error");
} filterContext.ExceptionHandled = true;
#endregion
}
}

2.注册

public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AppHandleErrorAttribute());
}
}

参考:http://www.cnblogs.com/linjiancun/archive/2010/09/16/1827937.html

3.使用

如果要运用AppHandleError拦截异常,则将Controller继承自BaseController即可。

[AppHandleError]
public abstract class BaseController : Controller
{
//......
}

MVC 使用HandleErrorAttribute统一处理异常的更多相关文章

  1. SpringMVC第六篇【校验、统一处理异常】

    Validation 在我们的Struts2中,我们是继承ActionSupport来实现校验的-它有两种方式来实现校验的功能 手写代码 XML配置 这两种方式也是可以特定处理方法或者整个Action ...

  2. SpringMVC【校验器、统一处理异常、RESTful、拦截器】

    前言 本博文主要讲解的知识点如下: 校验器 统一处理异常 RESTful 拦截器 Validation 在我们的Struts2中,我们是继承ActionSupport来实现校验的...它有两种方式来实 ...

  3. 本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善(转)

    本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善 namespace Web.Mvc.Extensions { #region 验证基类 /// <summary ...

  4. MVC默认提供了一个异常过滤器 HandleErrorAttribte特性

    这一篇记录MVC默认提供了一个异常过滤器 HandleErrorAttribte,下一篇介绍自定义异常过滤特性. 参考引用:https://www.cnblogs.com/TomXu/archive/ ...

  5. SpringBoot统一处理异常

    在springboot项目,报错有着默认的提示,这篇文章介绍一下如何统一处理异常. 新建项目,pom文件如下: <?xml version="1.0" encoding=&q ...

  6. The prefix "mvc" for element "mvc:annotation-driven" is not bound 异常

    https://www.cnblogs.com/maodot/p/7531042.html The prefix "mvc" for element "mvc:annot ...

  7. @ExceptionHandler和@ControllerAdvice统一处理异常

    //@ExceptionHandler和@ControllerAdvice统一处理异常//统一处理异常的controller需要放在和普通controller同级的包下,或者在ComponentSca ...

  8. 只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

    ## 统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生. 比较通用的返回值格式如下: ```jav ...

  9. .NET MVC Json()处理大数据异常解决方法

    [1-部分原文]: .NET MVC Json()处理大数据异常解决方法 整个项目采用微软的ASP.NET MVC3进行开发,前端显示采用EasyUI框架,图表的显示用的是Highcharts,主要进 ...

随机推荐

  1. python网络编程之最简单的单工通信

    tcp_server.py from socket import * server = socket(AF_INET, SOCK_STREAM) server.bind(('',12345)) ser ...

  2. DCMTK354之VC++ 2008 MFC应用程序配置完整过程

    花了一个礼拜,终于在VC++2008 MFC 应用程序中完成了首个基于DCMTK354的首个程序ECHOSCUWIN32,现将过程记录下来,便于日后查阅,同时也提供给那些有幸看到此博文而对他们又有帮助 ...

  3. poj2965枚举

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20398 ...

  4. ZJOI 游记

    在备战YZ提前招生考时去ZJOI玩了趟,ZJ果然人才辈出= =神犇讲课各种神听不懂啊orz day 0 Mon. 上午在AB班愉快地玩耍,下午就去HZ了. HZ真热啊... 学军也是节约= =空调都不 ...

  5. localResizeIMG

    http://think2011.net/localResizeIMG/test/ 演示一下 自己试试 点我直接进入演示页面 说明 在客户端压缩好要上传的图片可以节省带宽更快的发送给后端,特别适合在移 ...

  6. 【Python】Django支持事务方式

    代码: with transaction.atomic(): for i in xrange(int(svc_instance_num)): tmp_fileprotect_svc_instance ...

  7. jlink安装

    https://www.segger.com/jlink-software.html?step=1&file=JLink_510p

  8. table动态添加删除一行和改变标题

    <style type="text/css"> body{ font-size:13px; line-height:25px; } table{ border-top: ...

  9. html标签属性大全

    <marquee>...</marquee>普通卷动 <marquee behavior=slide>...</marquee>滑动 <marqu ...

  10. process vs thread

    process vs thread http://blog.csdn.net/mishifangxiangdefeng/article/details/7588727 6.进程与线程的区别:系统调度是 ...