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



我不知道为什么将其称为“Microsoft” C++异常?

真的是普通的C++异常吗?它来自什么类别? “Microsoft C++异常”是异常的类型,还是它从CTBadSupportFileException之类的异常派生而来的父类型?

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

最佳答案

这不是“Microsoft” C++异常。这是“Microsoft C++”异常。

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

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

调试器是在礼貌地对待您,而不是报告“Exception 0xE06d7363”,而是显示“Microsoft C++ exception”,甚至为您采取了decoding its parameters的额外步骤。

10-06 09:02
查看更多