Exception handling C+中的VCL异常+;建筑商5

Exception handling C+中的VCL异常+;建筑商5,exception-handling,c++builder,vcl,c++builder-5,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 ShowM

我试图控制代码中引发的异常,但是这个示例不在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块?

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

catch(const Exception& E)
这允许编译器发出稍微更有效的代码来管理异常。然而,仅此一点并不能阻止捕获异常

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

如果您是在调试器之外运行应用程序,那么您显示的代码没有任何错误,这将阻止
catch
在正常情况下捕获异常

我使用BCB5多年了,这种代码对我来说一直都很好(尽管我总是使用
const