【问题标题】:Can I ignore an exception only once?我可以只忽略一次异常吗?
【发布时间】:2016-10-05 04:20:04
【问题描述】:

当发生异常时,调试器会给我以下消息:

我可以通过检查ignore this exception type来选择忽略异常。
但是,这样做会忽略所有未来项目中的异常,这比无用更糟糕,因为我不想忽略每个项目中的异常;我只想在这次运行中忽略它们。

使用 ToolsAPI,有没有办法:

A - 仅忽略本次运行的异常,或
B - 忽略此项目的异常,或
C - 当我重新启动 Delphi 时恢复忽略异常设置?

如果我能做到 A、B 或 C,我的问题就解决了。

我知道ignore exception 数据存储在:

HKEY_CURRENT_USER\Software\Embarcadero\BDS\17.0\Debugging\Embarcadero Debuggers\Language Exception Classes

我的首选选项是使用 ToolsAPI 来修复消息框并添加 ignore this exception for this session only 复选框。
但是,如果这不可用,我可以随意处理注册表。
如果我确实回退到注册表,我想强制 Delphi 重新加载设置,这样我就不必重新启动 IDE。

为了记录,我正在使用西雅图,但我希望从 2007 年开始使用它。

我检查了 ToolsAPI,但 IOTAFileFilterWithCheckEncode 看起来不相关,我认为 IOTABreakpoint80 仅适用于用户设置的断点。

我还没有源代码,因为我不确定使用 ToolsAPI 是否可以实现我想要的,如果不是,我将回退到使用记录的外部应用程序上面的注册表项,启动Delphi并恢复注册表项。不过我希望有一种更清洁的方法。

【问题讨论】:

  • this 有帮助吗?它不是基于 OTA 的,但它可能会让您知道如何去做。 (我不确定 OTA 如何处理断点或者它是否支持访问高级属性,但它可能是一个开始的地方。)
  • @KenWhite,我可以使用它在任何单个异常周围放置两个“静默”断点,并忽略一个特定的异常来源。这实际上是一个很酷的想法,但比我现在正在寻找的要先进一些。

标签: delphi debugging exception toolsapi


【解决方案1】:

不幸的是,忽略异常的设置是全局 IDE 设置,而不是每个项目的设置,因此无论何时更改它们,更改都会影响您的所有项目。

我希望 Embarcadero 将其添加到项目选项中,以便我们可以为不同的项目设置不同的忽略异常设置。

在您检查ignore this exception type 并单击ContinueBreak 按钮后,全局IDE 设置已更改,提及的异常将添加到Exception types to ignore 列表中
Options->Debugger Options->Embarcadero Debugger->language Exceptions

在我的例子中,我添加了 EDivByZero 异常作为示例。

稍后您可以选中或取消选中某些异常前面的复选框,以控制 Delphi IDE 是否会忽略它。

现在可以使用 ToolsAPI 更改这些设置吗?我不知道,因为我没有任何使用 ToolsAPI 的经验。

我希望我至少可以为您指明正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 2014-04-29
    • 2014-04-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多