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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】ABP源码分析四十七:ABP中的异常处理

發布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】ABP源码分析四十七:ABP中的异常处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ABP 中異常處理的思路是很清晰的。一共五種類型的異常類。

AbpInitializationException用于封裝ABP初始化過程中出現的異常,只要拋出AbpInitializationException異常就可以,無須做額外處理。這類異常往往是需要維護人員介入分析的。

其他四個異常都在AbpController中被集中處理,處理分為兩步:一,通過EventBus觸發異常事件,相應的異常處理函數則處理異常。二,針對AbpValidationException,UserFriendlyException和AbpAuthorizationException異常,Abp會將異常信息轉換為ErrorInfo,并以view或Json的形式返回給客戶端。

?

AbpException: Abp中所有自定義的異常類的基類。

?

UserFriendlyException:繼承自AbpException類, 實現了IHasLogSeverity接口。用戶可以通過UserFriendlyException的實例來封裝需要返回給客戶端的異常。

?

?

實際使用UserFriendlyException的樣例如下

?

IExceptionToErrorInfoConverter:定義了將Exception轉換為ErrorInfo的方法。同時定義了一個指向自生的對象Next, 作者的用意應該是企圖以職責鏈的模式構建一個ExceptionToErrorInfoConverter實例的鏈,其中每個實例用于轉換一個類型的Exception到ErrorInfo。不過目前而言,ABP中并沒有如此實現這個功能,而是將所有的功能都塞到了一個DefaultErrorInfoConverter類中。

?

DefaultErrorInfoConverter:實現了將AbpValidationException,UserFriendlyException和AbpAuthorizationException實例將Exception轉換為ErrorInfo

?

?

IErrorInfoBuilder:定義了構建IExceptionToErrorInfoConverter職責鏈的方法和將Exception轉換為ErrorInfo實例的方法。

?

ErrorInfoBuilder:實現了接口IErrorInfoBuilder中定義的方法。通過構建DefaultErrorInfoConverter實例,并調用該實例完成Exception到ErrorInfo的轉換。

?

AbpController:重寫OnException方法來集中處理AbpValidationException,UserFriendlyException和AbpAuthorizationException異常的地方。注意ABP中沒有處理AbpInitializationException異常的地方,如果出現了AbpInitializationException的異常,系統會自動終止。

?

?

?

?

MvcAjaxResponse<TResult>,MvcAjaxResponse:用于封裝針對ajax requests的Response信息。繼承自AjaxResponse<TResult>,添加了一個TargetUrl屬性,沒有重寫基類中的方法。

?

AbpJsonResult:繼承自Newtonsoft的JsonResult。用于將CLR對象序列化為CamelCase的json 對象。

?

自定義的異常事件處理函數

?

返回ABP源碼分析系列文章目錄

總結

以上是生活随笔為你收集整理的【转】ABP源码分析四十七:ABP中的异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

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