分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

MVC-AOP(面向切面编程)思想-Filter之IExceptionFilter-异常处理

发布时间:2023-09-06 01:53责任编辑:蔡小小关键词:MVC

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=0,message="请联系管理员"} ???????????????}; ???????????} ???????????filterContext.Result = new ViewResult() ?//返回html页面 ???????????{ ???????????????ViewName = "~/Views/Shared/Error.cshtml", //出错后跳转的页面 ???????????????ViewData = filterContext.Controller.ViewData ???????????}; ???????????filterContext.ExceptionHandled = true; //告诉系统异常已经处理了,不用再处理了 ???????}

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

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

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

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

MVC-AOP(面向切面编程)思想-Filter之IExceptionFilter-异常处理

原文地址:https://www.cnblogs.com/Godlovezk/p/9013542.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved