HandleErrorAttribute

MVC中的基本异常分类:

      1. Action异常      T
      2. view异常    T,
      3. service异常     T,
      4. 控制器异常      F(异常get不到),
      5. 404异常           F(异常Get不到)

先写异常IExceptionFilter扩展类(还要注意一点是异常的类型,如果是前台的ajax请求出的异常,你返回html页面ajax是收不到的,所以要判断filterContext.HttpContext.Request.isAjaxRequest()),为真的话,返回自定义格式的json异常信息数组:

public void OnException(ExceptionContext filterContext)
{
string controller = filterContext.RouteData.Values["Controller"].ToString();
string action = filterContext.RouteData.Values["Action"].ToString();
filterContext.Controller.ViewData["ErrorMessage"] = filterContext.Exception.Message; //此处exception是异常类型实例
//分级:自定义不同的异常类别,完成检测,然后分级处理
if (filterContext.HttpContext.Request.IsAjaxRequest()) //如果是ajax请求,不能返回html的,要返回json异常信息
{
filterContext.Result = new JsonResult() {
Data=new { success=,message="请联系管理员"}
};
}
filterContext.Result = new ViewResult() //返回html页面
{
ViewName = "~/Views/Shared/Error.cshtml", //出错后跳转的页面
ViewData = filterContext.Controller.ViewData
};
filterContext.ExceptionHandled = true; //告诉系统异常已经处理了,不用再处理了
}

扩展好了之后后面就是注册了:具体注册方法见 上一篇 Filter的三种注册方式.

经过测试,上面所提到的5种异常前三种是可以捕获并处理的.但是后面两种异常如何处理???

这里就要用到真正的全局异常处理了:

只是简单的做了个例子,具体用到还要自行扩展.

MVC-AOP(面向切面编程)思想-Filter之IExceptionFilter-异常处理的更多相关文章

  1. 论AOP面向切面编程思想

    原创: eleven 原文:https://mp.weixin.qq.com/s/8klfhCkagOxlF1R0qfZsgg [前言] AOP(Aspect-Oriented Programming ...

  2. 什么是AOP面向切面编程思想

    一.什么是AOP? 1.AOP不是一种语言,是一种编程范式 常见的编程范式: 面向过程.面向对象.函数式编程.事件驱动编程等 2.AOP可以解决特定问题,不能解决所有问题. 3.是面向对象的补充,不是 ...

  3. MVC-AOP(面向切面编程)思想-Filter 三种注册方式

    在ASP.NET MVC框架中,为我们提供了四种类型的Filter类型包括:IAuthorizationFilter.IActionFilter.IResultFilter.IExceptionFil ...

  4. AOP面向切面编程的四种实现

     一.AOP(面向切面编程)的四种实现分别为最原始的经典AOP.代理工厂bean(ProxyFacteryBean)和默认自动代理DefaultAdvisorAutoProxyCreator以及Bea ...

  5. 【原创】Android AOP面向切面编程AspectJ

    一.背景: 在项目开发中,对 App 客户端重构后,发现用于统计用户行为的友盟统计代码和用户行为日志记录代码分散在各业务模块中,比如在视频模块,要想实现对用户对监控点的实时预览和远程回放行为进行统计, ...

  6. AOP(面向切面编程)大概了解一下

    前言 上一篇在聊MemoryCache的时候,用到了Autofac提供的拦截器进行面向切面编程,很明显能体会到其优势,既然涉及到了,那就趁热打铁,一起来探探面向切面编程. 正文 1. 概述 在软件业, ...

  7. AOP 面向切面编程, Attribute在项目中的应用

    一.AOP(面向切面编程)简介 在我们平时的开发中,我们一般都是面对对象编程,面向对象的特点是继承.多态和封装,我们的业务逻辑代码主要是写在这一个个的类中,但我们在实现业务的同时,难免也到多个重复的操 ...

  8. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存

    代码已上传Github+Gitee,文末有地址 上回<从壹开始前后端分离[ .NET Core2.0 Api + Vue 2.0 + AOP + 分布式]框架之九 || 依赖注入IoC学习 + ...

  9. AOP面向切面编程C#实例

    原创: eleven 原文:https://mp.weixin.qq.com/s/8klfhCkagOxlF1R0qfZsgg [前言] AOP(Aspect-Oriented Programming ...

随机推荐

  1. Spring mvc,uploadifive 文件上传实践(转自:https://segmentfault.com/a/1190000004503262)

     1.前台页面: 引入js和css 全选复制放进笔记 <link type="text/css" rel="stylesheet" href=&quo ...

  2. Mahout推荐算法之SlopOne

    Mahout推荐算法之SlopOne 一.       算法原理 有别于基于用户的协同过滤和基于item的协同过滤,SlopeOne采用简单的线性模型估计用户对item的评分.如下图,估计UserB对 ...

  3. XML Publisher Report Issues, Recommendations and Errors

    In this Document   Purpose   Questions and Answers   References APPLIES TO: Oracle Process Manufactu ...

  4. 集群通信组件Tribes之整体介绍

    接下来一系列文章会对集群通信框架tribes进行源码级别的分析,欢迎讨论. 把若干机器组合成一个集群,集群为了能协同工作,成员之间的通信是必不可少的,当然可以说这也是集群实现中重点需要解决的核心问题, ...

  5. PO订单审批拒绝API

    DECLARE l_return_status VARCHAR2(1); l_return_code VARCHAR2(1000); l_exception_msg VARCHAR2(4000); l ...

  6. android Timer与TimerTask的相关操作

    项目上面的部分操作需要使用到定时器进行周期性的控制.网络上面对于定时器的操作通常有三种实现方法. 我是通过Timer与TimerTask相结合实现的定时器功能.具体实现过程如下: 第一步,得到Time ...

  7. STL - set和multiset

    set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列.元素插入过程是按排序规则插入,所以不能指定插入位置. set采用红黑树变体的数据结构实现, ...

  8. LeetCode之“动态规划”:Maximum Product Subarray

    题目链接 题目要求: Find the contiguous subarray within an array (containing at least one number) which has t ...

  9. jdk8中tomcat修改配置PermSize为MetaspaceSize

    JDK8中用metaspace代替permsize,因此在许多我们设置permsize大小的地方同样需要修改配置为metaspace 将-XX:PermSize=200m;-XX:MaxPermSiz ...

  10. Spring--ApplicationContext

    //中心接口,给应用提供配置信息 public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory ...