c++ - C++ 异常和结构化异常之间的区别

标签 c++ exception mfc

有人能解释一下 C++ 异常和 MFC 中的结构化异常之间的区别吗?

最佳答案

你实际上有三种机制:

  • C++ 异常,由编译器实现 (try/catch)
  • Windows 提供的结构化异常处理 (SEH) (__try/__except)
  • MFC 异常宏(TRYCATCH - 建立在 SEH/C++ 异常之上 - 另见 TheUndeadFish 的评论)

C++ 异常通常保证在堆栈展开期间自动清理(即运行本地对象的析构函数),而其他机制则不能。

C++ 异常仅在显式抛出时发生。许多操作可能会出现结构化异常,例如由于未定义的行为、向 API 传递无效指针、卸载内存映射文件的后备存储等等。

MFC 确实引入了异常宏来支持异常,即使编译器没有实现它们。

关于c++ - C++ 异常和结构化异常之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3786647/

相关文章:

c# - 如何从 MFC 应用程序调用 .NET 窗体?

c# - 将大型 MFC 应用程序迁移到 WPF/.NET 有哪些技术?

c++ - SFINAE+类型特征的自动类型推导失败

c++ - 自包含应用程序中的异常安全

.net - 禁用 "Foo has encountered a problem and needs to close"窗口

c++ - 应用程序崩溃 C++/MFC 的通用日志

c++ - 提升图宽度优先搜索前身编译错误

c++ - 在 vector 组c++中找到大小最大的 vector

c++ - 如何打破 libevent 的调度循环

c++ - 为什么在 win32 计时器回调中抛出的未处理异常未被调试器视为未处理异常?