【问题标题】:VCL Exceptions in C++ Builder 5C++ Builder 5 中的 VCL 异常
【发布时间】:2013-04-17 03:10:45
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    catch(const Exception& E)
    

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

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

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

    我多年来一直使用 BCB5,这种类型的代码对我来说一直运行良好(尽管我总是使用 const)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 2011-01-29
      • 2022-12-16
      • 2012-12-02
      • 2012-01-05
      相关资源
      最近更新 更多