Exception handling C+中的VCL异常+;建筑商5
我试图控制代码中引发的异常,但是这个示例不在C++ + Builder 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
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
)