关机时(由UPS发起)我的应用程序崩溃并显示一个消息框。
消息框中的文本是“应用程序中出现异常未知软件异常(0x40000015)”。
我浏览了ntstatus.h
并找到了STATUS_FATAL_APP_EXIT
?如果它是正确的,为什么消息框会说“未知的软件异常”?
答案 0 :(得分:14)
是,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。
以下是一些相关问题: