我有一个应用程序,当调用FormatDateTime时,偶尔会返回整数溢出。尽管我发现提到问题herehere,但我不知道是什么情况触发了此情况。

我当前的解决方法是包装函数并处理异常:

function FormatDateTimeEx (const FormatString : ANSIString ;
                                 DateTime     : TDateTime) : ANSIString ;
begin
try
    Result := FormatDateTime (FormatString, DateTime) ;
except
    Result := '???' ;
    end ;
end ;


这解决了导致已编译的可执行文件崩溃的问题,但是如果我在IDE中运行程序时调试器没有在EIntOverflow异常上中断,我也希望这样做。我不想通过告诉IDE忽略EIntOverflow异常来执行此操作,因为这样在发生未捕获的整数溢出的其他情况下它不会中断(对吗?)。

对于那些可能发生异常并且您已经知道并正在处理异常的情况,是否存在以编程方式(编译时或运行时)告诉IDE在本地忽略异常类?

最佳答案

对于那些可能发生异常并且您已经知道并正在处理异常的情况,是否存在以编程方式(编译时或运行时)告诉IDE在本地忽略异常类?


没有代码,没有。但是,它可以在调试器中使用Breakpoints完成。

用两个断点包装受影响的代码:

function FormatDateTimeEx(const FormatString: AnsiString; DateTime: TDateTime): AnsiString;
begin // <-- breakpoint
  try
    Result := FormatDateTime (FormatString, DateTime) ;
  except
    Result := '???';
  end;
end; // <-- breakpoint


进入第一个断点的属性,并启用“忽略后续异常”选项并禁用“中断”选项。

进入第二个断点的属性,并启用“处理后续异常”选项并禁用“断点”选项。

关于delphi - Delphi 2007-以编程方式处理“要忽略的异常(exception)”列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22598095/

10-12 12:37
查看更多