c++ - 会发生的事情是在执行 throw 语句时抛出异常

标签 c++

我有以下代码片段:

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/

相关文章:

c++ - libgmp-10.dll 丢失

c++ - VisualAssistX 弄乱了我的 C++ VS2008 配色方案

c++ - 使用 zlib 压缩 boost 二进制文件

c++ - OpenGL .obj 加载程序 : Model only lit correctly with incorrect normal vectors?

c++ - 创建2个子进程

c++ - Objective-C to C++ 将二进制文件读入多维 float 组

c++ - 创建属于另一个使用 Qt Designer 制作的小部件的 Qt 小部件

c++ - 使用 g++ 从 g++ 和 gfortran 链接 .o 文件时出现 "__gfortran_pow_c8_i4"错误

c++ - constexpr 上下文中 std::array 指针的 size()

c++ - 使用 Visual Studio 2005 为 Windows NT 4.0 构建?