zoukankan      html  css  js  c++  java
  • .NET [MVC] 利用特性捕捉异常

    声明:本代码只适用于.NET MVC.

    先创建一个类继承ActionFilterAttribute这个抽象类以及实现IExceptionFilter接口,并实现它的方法OnException。

    代码如下:

    using FrameWork.Common;
    using System.Web;
    using System.Web.Mvc;
    
    namespace FrameWork.Web
    {
        public class ErrorHandleAttribute : ActionFilterAttribute, IExceptionFilter
        {
            /// <summary>
            /// 异常
            /// </summary>
            public void OnException(ExceptionContext filterContext)
            {
                //获取异常信息,入库保存
                var error = filterContext.Exception;
                var message = error.Message;//错误信息
                var url = HttpContext.Current.Request.RawUrl;//错误发生地址
                var controllerName = filterContext.RouteData.Values["controller"].ToString();
                var actionName = filterContext.RouteData.Values["action"].ToString();
                var exception = filterContext.Exception.ToString();
    
                Log4NetHelp.Error("出错位置:" + url, filterContext.Exception);
                filterContext.HttpContext.Response.Redirect("/Account/Login");//否则跳转至登陆页
            }
        }
    }

    如何使用呢?

    只需要在需要捕捉异常的控制器加上[ErrorHandle]即可。

    例如:

        [ErrorHandle]
        public abstract class AdminControllerBase : Controller
        {
              //代码逻辑
        }

    如果继承AdminControllerBase或者带有[ErrorHandle]特性的类和方法出现了错误,都会执行OnException方法,

    然后写上自己的异常处理逻辑即可。

  • 相关阅读:
    待解决问题集锦
    蓝桥杯--- 历届试题 连号区间数(水题)
    蓝桥杯---历届试题 翻硬币 (水题)
    nyoj 678 最小K个数之和
    hdoj 2 括号配对问题【数组模拟实现+STL实现】
    hdoj 1016 Prime Ring Problem
    nyoj 62 笨小熊
    nyoj 47 过河问题
    nyoj 456 邮票分你一半
    nyoj 171 聪明的kk
  • 原文地址:https://www.cnblogs.com/dawenyang/p/9228077.html
Copyright © 2011-2022 走看看