0

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

4

1 回答 1

0

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

catch(const Exception& E)

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

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

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

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

于 2013-04-23T19:30:40.860 回答