可能重复:
What is the difference between throw and throw with arg of caught exception?
Does catch (…) work on throw; with no object?
这会崩溃:
try
{
if(1)
throw;
}
catch(...)
{
printf("hi");
}
我以为我能做到,但我猜不是。当你不需要任何信息时,什么是正确的投掷方式?
答案 0 :(得分:6)
“裸投”重新抛出已经被捕获的异常。如果没有什么可以重新抛出,那就行不通了。
你可以扔掉任何东西,比如throw "Error!";
,即使它不是太有用。否则你可以尝试
if (x == 1)
throw std::runtime_error("x == 1 is not a good value here")`.
答案 1 :(得分:1)
#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");
}