什么是"Microsoft C++ exception"?

What is a "Microsoft C++ exception"?

本文关键字:exception C++ Microsoft 什么      更新时间:2023-10-16

这主要是出于好奇,但在调试时,我经常看到一行看起来像这样:

在 MyApp.exe 中0x7583812f的首次机会异常:Microsoft C++异常:CTBadSupportFileException 在内存位置 0x039be09c..

我想知道,为什么它被称为"Microsoft"C++例外?

这真的是一个正常的C++例外吗?它派生自什么类?"Microsoft C++异常"是异常的类型,还是CTBadSupportFileException等异常派生的父类型?

为什么调试器会这样记录它们?

它不是"Microsoft"C++例外。这是一个"Microsoft C++"例外。

当使用 RaiseException 函数引发操作系统异常时,调用方指定异常代码。有一些标准的异常代码,例如堆栈溢出的0xC00000FD或访问冲突的0xC0000005。但您也可以引发自定义异常代码,并且Microsoft C++工具链用于所有C++异常的自定义异常代码是0xE06d7363。

请注意,操作系统异常和C++异常是不同的概念。调试器中的消息涉及操作系统异常。

调试器正在礼貌地对待您,而不是报告"异常0xE06d7363",而是说"Microsoft C++异常",它甚至会采取额外的步骤为您解码其参数。