可能重复:
throw 和 throw 与捕获异常的 arg 有什么区别?
catch (...) 对 throw 有效吗?没有对象?
这将崩溃:
try
{
if(1)
throw;
}
catch(...)
{
printf("hi");
}
我以为我能做到,但我想不能。当您不需要任何信息时,正确的投掷方式是什么?
可能重复:
throw 和 throw 与捕获异常的 arg 有什么区别?
catch (...) 对 throw 有效吗?没有对象?
这将崩溃:
try
{
if(1)
throw;
}
catch(...)
{
printf("hi");
}
我以为我能做到,但我想不能。当您不需要任何信息时,正确的投掷方式是什么?
“裸抛出”重新抛出已经被捕获的异常。如果没有可重新抛出的东西,则效果不佳。
你真的可以扔任何东西,比如throw "Error!";
,即使那不是太有用。否则你可以尝试
if (x == 1)
throw std::runtime_error("x == 1 is not a good value here")`.
#include <exception>
try
{
if(1)
throw std::exception();
}
catch(...)
{
printf("hi");
}
这可能会更好,具体取决于您要做什么:
class my_exception : public std::exception {};
然后,
try
{
if(1)
throw my_exception();
}
catch(my_exception)
{
printf("hi");
}