0

可能重复:
throw 和 throw 与捕获异常的 arg 有什么区别?
catch (...) 对 throw 有效吗?没有对象?

这将崩溃:

try
{
    if(1)
        throw;
}
catch(...)
{
    printf("hi");
}

我以为我能做到,但我想不能。当您不需要任何信息时,正确的投掷方式是什么?

4

2 回答 2

6

“裸抛出”重新抛出已经被捕获的异常。如果没有可重新抛出的东西,则效果不佳。

你真的可以扔任何东西,比如throw "Error!";,即使那不是太有用。否则你可以尝试

if (x == 1)
    throw std::runtime_error("x == 1 is not a good value here")`.
于 2012-08-26T19:02:36.647 回答
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");
}
于 2012-08-26T21:02:01.890 回答