我有以下代码片段:
try
{
if(/*something is true*/)
{
throw Win32Error(msgWin32Error->GetError()); //assume msgWin32Error is NULL
}
}
catch (Win32Error& win32Error)
{
}
假设上述代码片段中的msgWin32Error为NULL,则在执行throw语句时,它将依次产生另一个异常。在这种情况下会发生什么?
谢谢,
苏
最佳答案
这里不会有C ++异常。
您正在混淆两件事:
C ++异常(请参阅:throw
,try
,catch
)
操作系统调用的运行时错误(例如分段错误)
后者有时也被混淆地称为“例外”,但是您不能使用C ++ catch
来捕获这些例外。
将会发生的情况是,msgWin32Error
的取消引用将(可能)导致操作系统终止您的应用程序。控制甚至不会达到您的throw
指令。
关于c++ - 将会发生的是在执行throw语句时抛出了异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30039793/