使用Dubbo框架,異常處理原則
阿新 • • 發佈:2019-01-06
- 在Dubbo的Service實現中捕獲異常,記錄異常日誌,將異常進行轉移為自定義異常丟擲,注意自定義異常需是RuntimeException,否則使用Spring事務時,不會出現回滾。
- 在dubbo服務的呼叫層,捕獲自定義異常,記錄日誌進行處理。
異常處理原則
1. 僅處理當前可處理的異常。
對所有的檢查型異常使用異常轉譯。
所有的自定義異常都是非檢查型異常。
異常流程與正常流程進行分離,並儘可能的統一處理。
在非異常處理模組的catch塊中儘可能不記日誌。
除非是進行資源釋放操作,否則catch塊不應為空或者出現e.printTrace
finally塊中不能出現複雜的操作,且不可以丟擲異常,也不可以出現return。
處理異常的一般方式
1. 將throw語句視為異常流程的起點,將Exception物件視作正常流程向異常流程躍遷過程中的資料載體。
建立統一的自定義異常型別,用以包裝所有檢查型異常。
大多數情況下僅在程式的主幹上建立唯一的異常捕獲點,並在這個點上對接收到的異常進行處理。
附上自定義異常程式碼
/**自定義Service異常
* Created by lxliuxuan on 2017/2/10.
*/
public class ServiceException extends RuntimeException {
public ServiceException() {
super ("Service層異常");
}
public ServiceException(String msg) {
super("Service層異常:"+msg);
}
public ServiceException(Throwable e) {
super("Service層異常:",e);
}
public ServiceException(String msg, Throwable e) {
super("Service層異常:"+msg,e);
}
}