我有以下代码片段:

try
{
    if(/*something is true*/)
    {
       throw Win32Error(msgWin32Error->GetError()); //assume msgWin32Error is NULL
    }
}
catch (Win32Error& win32Error)
{

}


假设上述代码片段中的msgWin32Error为NULL,则在执行throw语句时,它将依次产生另一个异常。在这种情况下会发生什么?

谢谢,

最佳答案

这里不会有C ++异常。

您正在混淆两件事:


C ++异常(请参阅:throwtrycatch
操作系统调用的运行时错误(例如分段错误)


后者有时也被混淆地称为“例外”,但是您不能使用C ++ catch来捕获这些例外。

将会发生的情况是,msgWin32Error的取消引用将(可能)导致操作系统终止您的应用程序。控制甚至不会达到您的throw指令。

关于c++ - 将会发生的是在执行throw语句时抛出了异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30039793/

10-13 07:04