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;

对于原始错误中的大多数代码,我想使用通用错误处理程序。但是,重新提高它似乎不允许触发更通用的异常类处理程序。(我不确定我会期望它。我以前从未做过这种事情。)

我最好的选择是有两个try/excepts吗?

4

1 回答 1

7

我可以看到 3 种可能的解决方案,

  • 你说的,两个尝试除了块
  • 将您通常的处理代码放入一个过程中,并从两个地方调用它
  • 像这样的东西

    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;
    

在这种情况下,我会使用第三个。

于 2012-10-15T22:26:33.107 回答