一、什么是異常過濾器?
異常過濾器(Exception Filters)是 ASP.NET Core 中用于處理全局異常的機(jī)制。它們允許你在發(fā)生異常時捕獲、處理和記錄異常,并提供自定義的異常處理邏輯。異常過濾器在整個應(yīng)用程序范圍內(nèi)生效,可以用于處理各種異常情況。用于實現(xiàn)常見的錯誤處理策略,沒有之前和之后事件,處理 Razor 頁面或控制器創(chuàng)建、模型綁定、操作過濾器或操作方法中發(fā)生的未經(jīng)處理的異常。但無法捕獲資源過濾器、結(jié)果過濾器或 MVC 結(jié)果執(zhí)行中發(fā)生的異常 。
二、異常過濾器實現(xiàn)
異常過濾器定義:
異常過濾器的定義,需要實現(xiàn)接口IExceptionFilter 或者IAsyncExceptionFilter,該接口包含一個 OnException 方法或者OnExceptionAsync方,用于處理發(fā)生的異常,繼承后重寫此方法。
#region << 版 本 注 釋 >>
/*----------------------------------------------------------------
* 創(chuàng)建者:碼農(nóng)阿亮
* 創(chuàng)建時間:2023/8/15 14:02:01
* 版本:V1.0.0
* 描述:
*
* ----------------------------------------------------------------
* 修改人:
* 時間:
* 修改說明:
*
* 版本:V1.0.1
*----------------------------------------------------------------*/
#endregion << 版 本 注 釋 >>
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using System;
namespace MyWebApp.Filter
{
/// <summary>
/// 異常過濾器
/// </summary>
public class ExceptionFilter : Attribute, IExceptionFilter
{
/// <summary>
/// 沒有之前和之后事件,當(dāng)程序發(fā)生沒有捕獲的異常時候執(zhí)行
/// </summary>
/// <param name="context"></param>
public void OnException(ExceptionContext context)
{
//異常信息
var ex = context.Exception;
//這里可以寫入異常日志到數(shù)據(jù)庫、文件或者控制臺
Console.WriteLine("錯誤信息:"+ex.Message);
/*
* 方便測試,此處將錯誤日志信息返回
*/
context.Result = new ContentResult()
{
Content = ex.Message,
ContentType = "text/html"
};
}
}
}
添加到全局過濾器:
services.AddMvc(options =>
{
//異常過濾器
options.Filters.Add<ExceptionFilter>();
});
添加測試Action:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
namespace MyWebApp.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ExceptionFilterController : ControllerBase
{
/// <summary>
/// 測試:手動拋出一個未捕獲異常
/// </summary>
/// <returns></returns>
[HttpGet]
public ActionResult Test()
{
throw new Exception("Oh,My God,A Exception Occurred......");
}
}
}
三、驗證:
接口Action訪問調(diào)用:
訪問地址:
https://localhost:5001/ExceptionFilter/Test
控制臺輸出異常信息:文章來源:http://www.zghlxwxcb.cn/news/detail-649135.html
調(diào)用接口時異常過濾器返回異常:文章來源地址http://www.zghlxwxcb.cn/news/detail-649135.html
到了這里,關(guān)于異常過濾器—MVC中異常過濾器使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!