在关机(由 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/