虽然它包含在catch语句中,但不会捕获异常

eig*_*tx2 2 c++ delphi pascal c++builder

我有这个用C++ Builder 6编写的程序.我没有编写所有代码,只是编写了一些代码.然而,语言不是C++(据我所知) - 它看起来更像是Delphi或Pascal.这就是我将它们全部包含在标签中的原因.

我有一个叫做的int Oversteering.

try
{
    Oversteering=HoursCounter.ToInt();
}
catch(EConvertError &convertError)
{
    Oversteering=0;
}
Run Code Online (Sandbox Code Playgroud)

HoursCounter 是一个AnsiString,它是一个int的形式.

因为这是整个代码中唯一的try/catch语句(这不太好,我知道),我在Delphi/Pascal/???中找不到任何好的例子,我不知道是不是写得不错.

好吧,我尝试将字符串转换为int.有时我会收到此错误:

错误

也就是说,发生了一个名为EConvertError的异常.

所以我的问题是:为什么这个异常没有被catch语句捕获?

Pre*_*ias 14

调试器在运行代码时会显示此错误,如果您运行exe并且具有相同的情况,则不会向您显示错误消息

捕获到异常,但调试器正在通知您有关代码中的错误

就在这里

  try
     {
      Oversteering=HoursCounter.ToInt();
     }
Run Code Online (Sandbox Code Playgroud)

因为在调试器中运行,你试图将(空白空间)转换为整数,调试器将显示异常...但是当运行exe时,调试器将设置

       Oversteering=0
Run Code Online (Sandbox Code Playgroud)

about.com查看

中断异常在构建具有异常处理的程序时,您可能不希望Delphi在异常上中断.如果您希望Delphi显示异常发生的位置,这是一个很棒的功能; 但是,当您测试自己的异常处理时,它可能会很烦人.