delphi - 我如何判断我是否处于 Delphi 异常堆栈中?

标签 delphi exception

从finally block 中,是否可以知道已经引发了异常?

最佳答案

您可以检查 exceptObject 或 exceptAddr 是否已分配。 在 VCL 源代码中,这是为了考试而完成的。在 GIFImg.pas 或 jpeg.pas 中。

下面的代码应该输出

ExceptObject <> nil
exceptObject = nil

如果你删除了异常,那么当然

ExceptObject = nil
exceptObject = nil

  try
    try
      raise Exception.Create('Just an exception');
    finally
      if ExceptObject <> nil then
        WriteLn('ExceptObject <> nil')
      else
        WriteLn('ExceptObject = nil');
    end;
  except

  end;
  if ExceptObject <> nil then
    WriteLn('ExceptObject <> nil')
  else
    WriteLn('ExceptObject = nil');

关于delphi - 我如何判断我是否处于 Delphi 异常堆栈中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416202/

相关文章:

.net - System.ArgumentException 路径中的非法字符

Delphi 7 TIdFTP FTP安全(密码保护)

delphi - 在 TOpenDialog 中右键单击文件时,使用自定义样式会显示无效字符

exception - 使用 ADSI 时 Powershell 脚本返回异常

java - 应用程序在尝试添加标记时抛出异常 "Not in the main thread"

java - 开发 Android 应用程序时的最佳实践

java - 使用 SAP JCo (v3.0) 时,如何处理 JCoContext.end() 期间的异常?

delphi - 这里有内存泄漏吗?

arrays - Delphi XE6,带有 boolean 成员字段的记录的3D数组,不会建立

Delphi FireMonkey Canvas 性能问题