【问题标题】:What is a "Microsoft C++ exception"?什么是“Microsoft C++ 异常”?
【发布时间】:2013-10-22 01:43:16
【问题描述】:

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

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

我想知道,为什么它被称为“Microsoft”C++ 异常?

这真的是一个普通的 C++ 异常吗?它派生自哪个类? “Microsoft C++ 异常”是异常的类型,还是 CTBadSupportFileException 等异常派生自的父类型?

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

【问题讨论】:

  • 我的疯狂猜测是它在谈论“Microsoft C++”,如“通过 MS 编译器编译的 C++”,而不是“Microsoft 异常”。但只是一个猜测..
  • @lethal-guitar 我刚刚检查过,你是对的!我抛出了一个 std::runtime_error,它被报告为First-chance exception at 0x7583812f in MyApp.exe: Microsoft C++ exception: std::runtime_error at memory location 0x0012dcc0.. 谢谢!
  • 第一次机会例外情况如下所述:blogs.msdn.com/b/davidklinems/archive/2005/07/12/438061.aspx

标签: c++ exception


【解决方案1】:

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

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

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

调试器是出于礼貌,它没有报告“异常 0xE06d7363”,而是显示“Microsoft C++ 异常”,它甚至为您采取了decoding its parameters 的额外步骤。

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 2015-02-08
    • 1970-01-01
    • 2011-12-12
    • 2014-05-14
    相关资源
    最近更新 更多