在 C++ 中处理异常时,我注意到一个奇怪的行为,我希望这里有人能解释一下。看下面的代码:
class Foo
{
public:
Foo()
{
throw 0;
}
};
class RandomException
{
public:
Foo f;
};
void bar()
{
throw RandomException();
}
// Case #1
int main()
{
bar();
return 0;
}
在上述情况下,我有一个未处理的异常。现在,如果我将main
函数的主体更改为:
// Case #2
int main()
{
try
{
bar();
}
catch (int)
{
}
return 0;
}
我正在接受这个例外。没有未处理的异常,代码运行良好。如果我将代码更改为:
// Case #3
int main()
{
try
{
bar();
}
catch (RandomException&)
{
}
return 0;
}
现在我又遇到了一个未处理的异常。
我想知道为什么在案例 #2 中我没有未处理的异常,而在案例 #3 中我有,即使在这两种情况下我都抛出了 2 个异常,一个int
和一个 type RandomException
。
抛出异常同时抛出异常时,C++如何处理?