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)
但是后者处理起来更加丑陋,而且一般都不赞成.