windows - 在 Windows 中, "The exception unknown software exception (0x40000015) occurred in the application"是否表示 STATUS_FATAL_APP_EXIT?

标签 windows exception exception-handling

在关机(由 UPS 启动)时,我的应用程序崩溃并出现一个消息框。

消息框中的文本是“应用程序中发生异常未知软件异常(0x40000015)”。

我浏览了 ntstatus.h 并找到了 STATUS_FATAL_APP_EXIT?如果是正确的,为什么消息框说“未知软件异常”?

最佳答案

是的,0x40000015 表示 STATUS_FATAL_APP_EXIT。您的应用程序在关闭期间导致未处理的运行时异常。如果您不自己处理某些运行时异常,它们实际上会被处理,并且其中一些默认处理程序会调用 abort()。默认情况下,abort 调用:

_call_reportfault(_CRT_DEBUGGER_ABORT, STATUS_FATAL_APP_EXIT, EXCEPTION_NONCONTINUABLE);

abort 是一个通用终止 - 它不知道是什么特定的异常提示它被调用,因此是通用的“未知软件异常”消息。

中止的一种途径是通过 _purecall 异常 - 调用未实现的纯虚拟调用。

从 Visual Studio\VC\crt\src 目录中的 purevirt.c 和 abort.c 中收集。


MSDN 有 documentation on overriding the default pure call exception handler .

下面是一些相关的问题:

关于windows - 在 Windows 中, "The exception unknown software exception (0x40000015) occurred in the application"是否表示 STATUS_FATAL_APP_EXIT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115611/

相关文章:

python - 使用嵌入式 Python 脚本编写 Windows GUI 应用程序

c++ - vector 对象初始化

windows - 批处理,调用 : Why can't I pass a token to my subroutine?

c# - trycatch 是如何伤害内存/CPU 的?

language-agnostic - 如何编写安全代码 : Condition checking Vs Exception handling?

c - 如何在 Windows 上的 C 程序中使用未定义的句柄之一?

c# - 启动进程时出现 System.ComponentModel.Win32Exception - 找不到文件,但文件存在

C++:main() 未捕获的异常的自定义格式

java - 异常和日志记录

java - Guava 缓存和保留检查的异常