2012-10-15 55 views
3

我正在捕獲異常,併爲該類中的特定異常類和錯誤代碼執行一些自定義處理。對於所有其他例外情況,我想使用通用錯誤處理程序。像這樣:用多個catch塊捕獲一個reraised異常?

on E:EADSDatabaseError do 
    begin 
    case E.ACEErrorCode of 
     5132: 
     begin 
     //Custom handling 
     end;  
     else 
     begin 
      raise; 
     end; 
    end; 
    end; 
on E:Exception do 
    begin 
    //usual handling 
    end; 

對於原始錯誤中的大多數代碼,我想通過一般的錯誤處理程序。但是,重新渲染它似乎不允許更通用的異常類處理程序觸發。 (我不知道我會期待它,我從來沒有做過這種事情。)

是我最好的選擇有兩個try/excepts

回答

7

我可以看到3個可能的解決方案,

  • 你說一下,兩次嘗試except塊
  • 把你常用的處理代碼的程序,並把它從兩個地方
  • 這樣的事情

    on E:Exception do 
    begin 
        if (e is EADSDatabaseError) and 
        (EADSDatabaseError(e).ACEErrorCode = 5132 then 
        begin 
        //Custom handling 
        end else 
        begin 
        //usual handling 
        end; 
    end; 
    

在這種情況下,我會用第三個。

+2

+1這是比我現在刪除的產品更好的答案 –

相關問題