日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core中异常过滤器ExceptionFilter的使用介绍

發布時間:2023/12/4 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core中异常过滤器ExceptionFilter的使用介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

實現需要繼承IExceptionFilter 或 IAsyncExceptionFilter。

可用于實現常見的錯誤處理策略。

使用場景

首先講一下我們為什么要使用異常過濾器 ,如果業務場景復雜,只使用HttpStatusCode,拋出異常后,后期要加很多字段來描述。

那么這種就比較不適合, 我們就可以自己定義一套規則, 比如返回結果必須是 code, data, Message等那我們就要寫一個通用數據model。

public?class?ApiResult<T>{public int Code { get; set; }public string Message { get; set; }public T Data { get; set; }}

定義一套自己的code標準, 比如1 成功,0 系統異常, 1xx 某類業務, 2xx 某類業務 。

所以我們在拋出異常的時候需要去處理 ,所以異常過濾器就派上用場了,當然還可以用中間件處理異常,這里就不說了!

使用

? 新建ExceptionFilter 繼承IAsyncExceptionFilter

? ? 若要處理異常,將 屬性 ExceptionHandled 設置為 或 true 分配 Result 屬性。

? ? 這將停止傳播異常。異常篩選器無法將異常轉變為“成功”。只有操作篩選器才能執行該轉變。

在處理異常的時候獲取到context.Exception就能處理不同的異常類型了!

我這里自定義了一個異常類, 當然實際場景中根據業務來新建你們自己的異常類滿足需求就行了了!

public class ServicesException : Exception{public override string Message { get; }public ServicesException(string message) : base(message){this.Message = message;}}

ExceptionFilter?類:

public class ExceptionFilter : IAsyncExceptionFilter{public Task OnExceptionAsync(ExceptionContext context){// 如果異常沒有被處理則進行處理if (context.ExceptionHandled == false){int code = 0;if (context.Exception is ServicesException){code = 1;}// 定義返回類型var result = new ApiResult<string>{Code = code,Message = context.Exception.Message,Data=""};context.Result = new ContentResult{// 返回狀態碼設置為200,表示成功StatusCode =(int)HttpStatusCode.OK,// 設置返回格式ContentType = "application/json;charset=utf-8",Content = JsonConvert.SerializeObject(result)};}// 設置為true,表示異常已經被處理了context.ExceptionHandled = true;return Task.CompletedTask;}}

最后我們將異常過濾器注冊到全局即可!(局部注冊可參看)

.NET?Core中行為過濾器ActionFilterAttribute的使用介紹

黑哥聊dotNet,公眾號:黑哥聊dotNet.NET Core中行為過濾器ActionFilterAttribute的使用介紹

services.AddControllers(o => o.Filters.Add(typeof(ExceptionFilter)));

測試代碼與結果:

總結

以上是生活随笔為你收集整理的.NET Core中异常过滤器ExceptionFilter的使用介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。