繁体   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