1. 程式人生 > >使用Dubbo框架,異常處理原則

使用Dubbo框架,異常處理原則

  1. 在Dubbo的Service實現中捕獲異常,記錄異常日誌,將異常進行轉移為自定義異常丟擲,注意自定義異常需是RuntimeException,否則使用Spring事務時,不會出現回滾。
  2. 在dubbo服務的呼叫層,捕獲自定義異常,記錄日誌進行處理。

異常處理原則
1. 僅處理當前可處理的異常。

  1. 對所有的檢查型異常使用異常轉譯。

  2. 所有的自定義異常都是非檢查型異常。

  3. 異常流程與正常流程進行分離,並儘可能的統一處理。

  4. 在非異常處理模組的catch塊中儘可能不記日誌。

  5. 除非是進行資源釋放操作,否則catch塊不應為空或者出現e.printTrace

  6. finally塊中不能出現複雜的操作,且不可以丟擲異常,也不可以出現return。

處理異常的一般方式
1. 將throw語句視為異常流程的起點,將Exception物件視作正常流程向異常流程躍遷過程中的資料載體。

  1. 建立統一的自定義異常型別,用以包裝所有檢查型異常。

  2. 大多數情況下僅在程式的主幹上建立唯一的異常捕獲點,並在這個點上對接收到的異常進行處理。

附上自定義異常程式碼

/**自定義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); } }