3

私は例外をキャッチしており、特定の例外クラスとそのクラス内のエラー コードに対して、カスタム処理を行っています。他のすべての例外については、一般的なエラー ハンドラーを使用したいと考えています。そのような:

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;

元のエラーのほとんどのコードについては、一般的なエラー ハンドラーに移行したいと考えています。ただし、それを再発生させても、より一般的な例外クラス ハンドラーを起動できないようです。(期待できるかどうかはわかりません。この種のことはこれまでに行ったことがありません。)

2つ持つのが私の最良の選択肢try/exceptsですか?

4

1 に答える 1

7

私は3つの可能な解決策を見ることができます、

  • あなたが言ったこと、2つの試みはブロックを除いて
  • 通常の処理コードをプロシージャに配置し、両方の場所から呼び出します
  • このようなもの

    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;
    

この場合、3 番目のものを使用します。

于 2012-10-15T22:26:33.107 に答える