我有以下代码片段:
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/