Delphi “除块外的原因”;尝试..除了;被绕过

Delphi “除块外的原因”;尝试..除了;被绕过,delphi,debugging,try-except,Delphi,Debugging,Try Except,我正在针对一个没有源代码的第三方组件编写一些代码。(不要对此发表评论:)),在该组件上调用方法时会发生一些情况,即使我将其放入try-except块中,except块也会被绕过 我做错什么了吗 原因可能是什么 begin try 3rdPartyComponentWithNoSourceCode.MethodOne; [A] SomeOtherCode; except HandleException; [A'] end; end; [B] 一步一步地调试将我

我正在针对一个没有源代码的第三方组件编写一些代码。(不要对此发表评论:)),在该组件上调用方法时会发生一些情况,即使我将其放入try-except块中,except块也会被绕过

我做错什么了吗

原因可能是什么

begin
  try
    3rdPartyComponentWithNoSourceCode.MethodOne; [A]
    SomeOtherCode;
  except
    HandleException; [A']
  end;
end; [B]
一步一步地调试将我从[A]带到[B],而不会在[A']上停止


为什么?

当您单步执行代码时,调试器无法跳转到异常处理程序。将断点放在HandleException上,它将停止在那里(如果首先出现异常)。

当您单步执行代码时,调试器无法跳转到异常处理程序。将断点放在HandleException上,它将在那里停止(如果首先出现异常)。

没有到达
HandleException
的原因可能是
MethodOne
中引发的任何异常都可能被
MethodOne
本身吃掉或处理

但情况可能并非如此,因为:

事情发生了


您能详细介绍一下吗?

没有达到
HandleException
的原因可能是
MethodOne
中引发的任何异常都可能被
MethodOne
本身吃掉或处理

但情况可能并非如此,因为:

事情发生了


你能扩展一下something吗?

这样既不执行
somethercode
也不执行
HandleException
?点击
[B]
后应用程序是否正常运行?你的
except
部分是否包含
on exception do…
子句?如果不是,则在异常do上添加
处理异常之前添加
并查看这是否会改变行为。因为没有异常;)其他代码做什么?可能已经优化了吗?抱歉耽搁了。是的,按F8键后,它会直接跳到[B]。我从未见过,但我忘了说第三方组件是ActiveX组件。这可能是原因吗?(它是ActiveX的包装器)因此既不执行
SomeOtherCode
也不执行
HandleException
?在点击
[B]
后应用程序是否正常运行?您的
except
部分是否包含
on exception do…
子句?如果不是,则在异常do上添加
处理异常之前添加
并查看这是否会改变行为。因为没有异常;)其他代码做什么?可能已经优化了吗?抱歉耽搁了。是的,按F8键后,它会直接跳到[B]。我从未见过,但我忘了说第三方组件是ActiveX组件。这可能是原因吗?(它是ActiveX的包装器)