В Windows означает «исключение неизвестного программного обеспечения (0x40000015) в приложении» означает STATUS_FATAL_APP_EXIT? - PullRequest
6 голосов
/ 25 февраля 2011

При выключении (инициированном ИБП) происходит сбой моего приложения и появляется окно сообщения.

Текст в окне сообщения «Исключительная ситуация неизвестного программного обеспечения (0x40000015) возникла в приложении».

Я просмотрел ntstatus.h и нашел STATUS_FATAL_APP_EXIT?Если это правильно, почему в окне сообщения указано «неизвестное исключение программного обеспечения»?

1 Ответ

14 голосов
/ 21 мая 2011

Да, 0x40000015 означает STATUS_FATAL_APP_EXIT.Ваше приложение вызывает необработанное исключение времени выполнения во время завершения работы.Некоторые исключения во время выполнения обрабатываются, если вы сами их не обрабатываете, а некоторые из этих обработчиков по умолчанию вызывают abort().По умолчанию abort звонки:

_call_reportfault(_CRT_DEBUGGER_ABORT, STATUS_FATAL_APP_EXIT, EXCEPTION_NONCONTINUABLE);

abort является общим завершением - оно не знает, какое конкретное исключение побудило его вызвать, отсюда и общее сообщение «неизвестное исключение программного обеспечения».

Один из способов прервать - исключение _purecall - вызов нереализованного чисто виртуального вызова.

Получены из purevirt.c и abort.c в каталоге Visual Studio \ VC \ crt \ src.


MSDN имеет документацию по переопределению обработчика исключений чистого вызова по умолчанию .

Вот несколько связанных вопросов:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...