.NET Core[MVC] 利用特性捕捉異常


聲明:本方式適用於MVC。本代碼只適用於.NET Core MVC.

先創建一個類繼承ExceptionFilterAttribute這個抽象類,並override它的方法OnException。

代碼如下:

    /// <summary>
    /// 處理錯誤信息
    /// </summary>
    public class ErrorHandleAttribute : ExceptionFilterAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            //獲取異常信息,入庫保存
            var exception = filterContext.Exception;
            var controllerName = filterContext.RouteData.Values["controller"].ToString();
            var actionName = filterContext.RouteData.Values["action"].ToString();
            var msg = $"出錯位置:{controllerName}/{actionName}----出錯時間:{DateTime.Now:yyyy-MM-dd HH:mm:ss:fff}";
            Log4NetHelp.Error(msg, exception);//記錄異常日志到本地磁盤
            filterContext.Result = new RedirectResult("/Home/Error");
            EmailHelper.SendMail(exception);//發送郵件通知到相關人員
            base.OnException(filterContext);
        }
    }

如何使用呢?

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

例如:

    [ErrorHandle]
    public abstract class AdminControllerBase : Controller
    {
          //代碼邏輯
    }

如果繼承AdminControllerBase或者帶有[ErrorHandle]特性的類和方法出現了錯誤,都會執行OnException方法,然后就可以記錄異常日志和發送郵件通知到相關人員了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM