我能否仅忽略一次异常?

10
当出现异常时,调试器会给我以下信息:enter image description here 我可以选择通过勾选“忽略此例外类型”来忽略该异常。但是这样做会在以后的所有项目中忽略此异常,这比毫无用处更糟糕,因为我不想在每个项目中都忽略异常; 我只想在这次运行中忽略它们。使用ToolsAPI,有以下几种方法可以实现:A-仅在此次运行中忽略异常,还是B-仅在此项目中忽略异常,或者C-在重启Delphi时恢复忽略异常设置?如果可以进行A、B或C中的任何一个,我的问题就解决了。我知道“忽略异常”数据存储在以下位置:HKEY_CURRENT_USER\Software\Embarcadero\BDS\17.0\Debugging\Embarcadero Debuggers\Language Exception Classes。我首选的选项是使用ToolsAPI来修复消息框并添加一个“仅在本次会话中忽略此异常”的复选框。但如果没有可用的选项,我也可以直接操作注册表。如果我回退到注册表,则希望强制Delphi重新加载设置,以便我不必重新启动IDE。就记录而言,我正在使用Seattle,但我希望从2007年开始都可以使用此方法。我已经检查了ToolsAPI,但是IOTAFileFilterWithCheckEncode似乎与之无关,而我认为IOTABreakpoint80仅适用于用户设置的断点。

我还没有源代码,因为我不确定我想要的是否可以使用ToolsAPI实现,如果不行,我就会使用一个外部应用程序记录上述注册表键,并启动Delphi并恢复注册表键。不过,我希望有更简洁的方法。


相关链接:https://dev59.com/z2kw5IYBdhLWcg3waZxW - Johan
这个帮助吗?它不是基于OTA的,但它可能会给你一个关于如何处理它的想法。(我不确定OTA如何使用断点或是否支持访问高级属性,但这可能是一个开始的地方。) - Ken White
@KenWhite,我可以使用它在任何单个异常周围放置两个“静默”断点,并忽略那个特定的异常源。这实际上是一个很酷的想法,但比我现在需要的要高级一些。 - Johan
1个回答

1

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

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

在您勾选“忽略此异常类型”并单击“继续”或“中断”按钮后,全局IDE设置会更改,并且所提到的异常会添加到“要忽略的异常类型”列表中,在
选项->调试器选项->Embarcadero调试器->语言异常

Exception types to ignore

在我的情况下,我添加了EDivByZero异常作为示例。
稍后,您可以勾选或取消特定异常前面的复选框,以控制Delphi IDE是否会忽略它。
现在是否可能使用ToolsAPI更改这些设置?我不知道,因为我没有使用ToolsAPI的经验。
我希望至少能指引您朝正确的方向。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接