繁体   English   中英

C ++ Builder 5中的VCL异常

[英]VCL Exceptions in 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块?

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

catch(const Exception& E)

这样一来,编译器就可以发出更有效的代码来管理异常。 但是,仅此一项并不能阻止捕获异常。

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

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

我使用BCB5已有多年,这种类型的代码对我来说一直很好(尽管我始终使用const )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM