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方法,

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

  • 相关阅读:
    SQL学习指南第三篇
    SQL学习指南第二篇
    Rebuilding Roads
    TOJ4244: Sum
    K-th Number
    【模板】后缀数组
    冰水挑战
    旅途
    Monkey and Banana
    Max Sum Plus Plus
  • 原文地址:https://www.cnblogs.com/dawenyang/p/9228077.html
Copyright © 2011-2022 走看看