ABP源碼分析四十七:ABP中的異常處理

來源:互聯網
上載者:User

標籤:

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中的異常處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.