抛出没有参数的失败信号

Cod*_*der 8 c++

throw;如果出现问题,可以从构造函数调用,你不知道如何恢复?

这个想法是让应用程序崩溃,因为状态是未知的.或者你应该总是指定一个参数?

从MSDN我只发现如果没有参数它会重新抛出,但不知道如果没有重新抛出的初始异常会发生什么.

sha*_*oth 13

如果当前正在处理没有异常throw;将导致terminate()立即被调用,这将异常终止您的程序.这不是很方便 - 与投掷有意义的异常相比,您将获得更少的信息.您可能抛出一个有意义的异常,在顶层捕获它(如main()),编写一些诊断然后结束程序.


Jan*_*dec 10

No. throw;是一种重新抛出当前异常的特殊语法.只有在catch块(或从一个调用的代码)内继续传播异常才有意义.

只需使用:

#include <stdexcept>
...
throw std::runtime_error("some description");
Run Code Online (Sandbox Code Playgroud)

甚至只是

throw "some description";
Run Code Online (Sandbox Code Playgroud)

但是后者处理起来更加丑陋,而且一般都不赞成.