.net mvc中AOP 异常捕获后返回自定义的Json

  .net mvc中封装了一些特性可以实现AOP,如常用的HandleErrorAttribute,ActionFilterAttribute,AuthorizeAttribute。自定义一个特性,继承这些特性,并重写里面的方法就可以AOP切入到Action中的关注点。本篇文章主要对笔者在使用HandleErrorAttribute的过程中遇到的一个问题进行分享。

  我们在action中会用try..catch..进行异常处理,笔者在catch中返回一个json(标示失败)。我发现所有的action在catch中返回值都一样,所以就想到使用HandleErrorAttribute进行异常捕获,然后返回自定义的json。但是发现我在OnException方法中已经设置了filterContext.Result为我想要返回的值了,但是运行时还是报错,并没有返回我处理后返回的json。如果你也遇到这样的问题,添上一句话就OK了,那就是:filterContext.ExceptionHandled = true;

  这是为什么呢?可能你看到这里已经恍然大悟了,那就是你要把ExceptionHandled这个表示设置为true,意思也就是我已经处理过了这个异常。这时候,浏览器一看,哦~已经处理了异常了,就输出你要的json了,如果你不设置成true,浏览器一看,还是没有Handed的异常,就给你报出来了。

时间: 2024-10-06 17:00:06

.net mvc中AOP 异常捕获后返回自定义的Json的相关文章

4.异常捕获后再次抛出

4.异常捕获后再次抛出 情况一:捕获后抛出原来的异常,希望保留最新的异常抛出点--fillStackTrace 情况二:捕获后抛出新的异常,希望抛出完整的异常链--initCause 1.捕获后重新抛出捕获的异常 在函数中捕获了异常,在catch模块中不做进一步的处理,而是向上一级进行传递 catch(Exception e){ throw e; } public class ReThrow { public static void f()throws Exception{ throw new

ASP.NET MVC AJAX调用JsonResult方法并返回自定义错误信息

一.如何用AJAX调用JsonResult方法 比如FuckController中添加有个返回JsonResult类型的方法FuckJson(): public JsonResult FuckJson() { return new JsonResult() { Data = new List<string>() { "fuck", "shit" }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }

控制人物转向移动,动画播放的过程中插播其他动画后返回

人物转向移动的代码是我在网上粘贴后改动的-----------------------侵删--------------------------- 难点:如何在A动画中插播B动画再返回 思路:开始我的想法是在两个动画之间create transition用代码控制返回,但是条件是2s播放一次,间隔时间的重制和这个有冲突,如何使B动画播放完毕后再返回,后来经大神指点(万分感谢呀O(∩_∩)O~~),在A动画播放的状态下判断时间,2s后直接播放B动画,transition 勾选Has Exit Tim

spring MVC中定义异常页面-定义异常问题处理页面

第一种方法.在spring-servlet.xml定义 <?xml version="1.0" encoding="UTF-8"?> <beans  xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://ww

MySQL 如何在一个语句中更新一个数值后返回该值 -- 自增长种子竞态问题处理

什么是竞态问题? 假设有一个计数器,首先当前值自增长,然后获取到自增长之后的当前值.自增长后的值有可能被有些操作用来当做唯一性标识,因此并发的操作不能允许取得相同的值. 为什么不能使用使用UPDATE语句更新计数器,然后SELECT语句获取自增长后的当前值?问题在于并发的操作有可能获取到相同的计数器值. CREATE TABLE counters ( id INT NOT NULL UNIQUE, -- 计数器ID,多个计数器可以存在一个表中, value INT -- 计数器当前值 ); --

JAVA 线程中的异常捕获

在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked exception处理掉.这一点是通过java.lang.Runnable.run()方法声明(因为此方法声明上没有throw exception部分)进行了约束.但是线程依然有可能抛出unchecked exception(如运行时异常),当此类异常跑抛出时,线程就会终结,而对于主线程和其他线程完全

【Spring MVC】spring mvc中相同的url请求返回不同的结果

在项目中凡是使用Spring MVC这种控制器的,大多都是返回JSON数据对象,或者JSP页面. 但是相同的URL请求如何让他自动的选择放回的是什么? 在这里有由于鄙人没有亲自测试过,就不敢乱贴代码,只把别人写的引用一下,以防未来某天需要而忘却. 引用地址:http://my.oschina.net/wzlee/blog/262205

C#中的异常捕获机制(try catch finally)

一.C#的异常处理所用到关键字 try :用于检查发生的异常,并帮助发送任何可能的异常. catch :以控制权更大的方式处理错误,可以有多个catch子句.  finally: 无论是否引发了异常,finally的代码块都将被执行.  throw: 用于引发异常,可引发预定义异常和自定义异常. 二.C#异常处理的格式 1 try 2 { 3 //程序代码块: 4 } 5 catch(Exception e) 6 { 7 //异常处理代码块: 8 } 9 finally 10 { 11 //无论

js中的异常捕获 try{} catch{}(二)

事件轮循中,抛出的异常信息会丢失函数调用的路径,所以每一步都要进行错误处理 function a(){ b(); } function b(){ c(); } function c(){ // setTimeout(() => { // throw new Error('here'); // }, 1000); throw new Error('here'); } //调用a方法 a(); 异步函数抛出错误信息显示: 同步方法抛出错误信息显示: 原文地址:https://www.cnblogs.