一千萬個為什麽

搜索

C ++ catch構造函數異常

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

     struct Thread {
            rysq::cuda::Fock fock_;
            template
            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 with no operand is only used inside of a catch block to rethrow the exception being handled by the catch block.

轉載註明原文: C ++ catch構造函數異常