簡體   English   中英

C ++ catch構造函數異常

[英]C++ catch constructor exception

我似乎不明白如何捕獲構造函數異常。 這是相關代碼:

     struct Thread {
            rysq::cuda::Fock fock_;
            template<class iterator>
            Thread(const rysq::cuda::Centers &centers,
                   const iterator (&blocks)[4])
                : fock_()
            {
                if (!fock_) throw;
           }
      };

      Thread *ct;
      try { ct = new Thread(centers_, blocks); }
      catch(...) { return false; } // catch never happens,

所以catch語句不執行,我得到未處理的異常。 我做錯了什么? 這是使用g ++的直接C ++。

你必須扔一個物體,例如,

throw std::exception();

throw無操作數僅用於一個內部catch塊重新拋出由正在處理的異常catch塊。

為了抓住任何東西,你必須拋出一些東西。

嘗試更改線路

if (!fock_) throw;

if (!fock_) throw "";

並觀察差異。

你需要拋出一些東西。 單獨throw意味着“重新拋出”當前的異常。 如果沒有當前異常,則調用unexpected ,這可能會中止您的程序。

最好從<stdexcept>中選擇一個描述問題的類。 logic_error或指示編程錯誤的派生詞,或指示異常情況的runtime_error

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM