C ++ Builder 5中的VCL异常

时间:2013-04-23 19:04:31

标签: exception-handling c++builder vcl c++builder-5

我正在尝试控制代码中引发的异常,但是此示例在C ++ Builder 5下无法正常工作。

void __fastcall TForm1::Button1Click(TObject *Sender)
{ 
    try
    {
         throw Exception("NoNumber");
    }
    catch(Exception& E)
    {
        // but we never get the LALAL message
        ShowMessage("LALAL");
    }
}

为什么在引发异常时从未到达catch块?

1 个答案:

答案 0 :(得分:0)

首先,您应该通过const引用来捕获异常:

catch(const Exception& E)

这允许编译器发出稍微更有效的代码来管理异常。但是,仅凭这一点并不能防止异常被捕获。

如果您正在调试器内部运行应用程序,请记住调试器将首先捕获异常,因此您必须告诉调试器将异常传递回您的应用程序,以便通过按F9或Run来正常处理工具栏按钮,或者配置调试器以忽略异常。

如果您在调试器之外运行应用程序,那么您所显示的代码没有任何问题会阻止catch在正常情况下捕获异常。

我使用BCB5多年了,这种类型的代码对我来说一直很好(虽然我总是使用const)。