使用 Delphi 和 FastReport,在 Delphi 内调试时,紧接此行之后,我收到此错误消息:
<FastReport_Component>.ShowReport(true);
然后出现这个错误:
项目 myapp.exe 引发异常类 EVariantTypeCastError 并显示消息“无法转换类型的变体”
(字符串)转换为类型(双)'。
在显示报告之前它会出现两次。但如果我运行 myapp 而不进行调试,则不会出现错误消息。
我如何找到导致此错误的备忘录?报告中有很多备忘录。有些里面还有 using 的表达式IIF
并且错误消息不会显示任何更多信息。
这只是调试器。它可能只是收到一个预期的错误(一个由try..except
在 FR 代码中)并正确处理它,但调试器无法知道并告诉您发生了异常。 (这是使用 Indy 时的一个常见问题,它会在正常程序流程中引发异常。)
调试时可以通过三种方式处理这种情况:
刚打Continue
当异常对话框出现时。 (你可以看出这是一个调试器异常,因为你得到了Break
or Continue
选项,因为它只在调试时发生。)
您可以在调试时禁用特定异常类(或所有异常),使用Tools->Options->Debugger Options
。在这种情况下,您可以添加EVariantTypeCastError
到要忽略的例外列表。
-
(我的首选方法)使用Advanced Breakpoint Properties
对话框以跳过调试器对您知道会引发您想要忽略的异常的特定代码行的异常处理。
- 在问题代码行之前的行上设置断点。
- 右键单击之前行上的断点,然后选择
Breakpoint Properties
从上下文菜单中。
- 点击
Advanced
按钮上的Breakpoint Properties
对话框,并在Actions
组框,取消选中Break
并检查Ignore subsequent exceptions
.
- 在问题代码后面的行上重复前面的步骤,但检查除外
Break
并取消选中Ignore subsequent exceptions
在第二个断点上。
- 像往常一样运行您的代码。调试器将跳过对两个断点之间的代码的异常处理。
选项 #3 的优点是它忽略所有异常处理,但仅忽略两个断点之间的代码块,因此您仍然会在代码的所有其他区域中得到异常,这些异常在调试器中可能是有效的异常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)