簡體   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