2011-02-25 12 views
6

En el cierre (iniciado por un UPS), mi aplicación falla y aparece un cuadro de mensaje.En Windows, ¿se produjo "excepción de software desconocido de excepción (0x40000015) en la aplicación" significa STATUS_FATAL_APP_EXIT?

El texto en el cuadro de mensaje es "Se produjo la excepción de software desconocido de excepción (0x40000015) en la aplicación".

Busqué ntstatus.h y lo encontré STATUS_FATAL_APP_EXIT? Si fuera correcto, ¿por qué el cuadro de mensaje dice "excepción de software desconocido"?

Respuesta

13

Sí, 0x40000015 significa STATUS_FATAL_APP_EXIT. Su aplicación provoca una excepción de tiempo de ejecución no controlada durante el apagado. Algunas excepciones de tiempo de ejecución se manejan realmente si no las maneja usted mismo, y algunos de estos controladores predeterminados llaman al abort(). Por defecto, las llamadas abort:

_call_reportfault(_CRT_DEBUGGER_ABORT, STATUS_FATAL_APP_EXIT, EXCEPTION_NONCONTINUABLE); 

abort es una terminación genérica - que no sabe lo que provocó una excepción específica que sea llamado, por lo tanto, el mensaje genérico 'excepción de software desconocido'.

Una ruta para abortar es a través de la excepción _purecall: llamar a una llamada virtual pura no implementada.

Obtenido de purevirt.c y abort.c en el directorio de Visual Studio \ VC \ crt \ src.


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

Estas son algunas preguntas relacionadas:

+1

Sean e escribió: "Algunas excepciones de tiempo de ejecución son en realidad manejados si no los manejas" . ¿Puede darme una referencia al tema? MSDN? Gracias. –

Cuestiones relacionadas