gpt4 book ai didi

delphi - 使用多个 catch block 捕获重新引发的异常?

转载 作者:行者123 更新时间:2023-12-03 15:46:43 27 4
gpt4 key购买 nike

我正在捕获异常,并且对于该类中的特定异常类和错误代码,我做了一些自定义处理。对于所有其他异常,我想使用通用错误处理程序。像这样:

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 吗?

最佳答案

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

  • 你说的,两个try except block
  • 将常用的处理代码放入一个过程中,并从两个地方调用它
  • 类似这样的事情

    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;

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

关于delphi - 使用多个 catch block 捕获重新引发的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12904761/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com