visual studio microsoft español descargar community c++ windows mfc

c++ - microsoft - visual studio installer



¿Por qué se cuelga mi aplicación MFC cuando lanzo una excepción? (3)

El código para CDialog :: DoModal hace que el diálogo sea modal al deshabilitar la ventana principal. Cuando el código de diálogo vuelve, la ventana vuelve a habilitarse. Hay una captura explícita para los errores CException *, pero no para ningún otro tipo de excepción lanzada; por lo tanto, la ventana padre nunca se vuelve a habilitar.

Cambie su código para arrojar un puntero a cualquier excepción derivada de CException, y solucionará el problema.

Si lanza una excepción desde dentro de un cuadro de diálogo MFC, la aplicación se bloquea, incluso si tiene un bloque catch en su código. Se niega a responder al mouse o al teclado, y la única manera de apagarlo es usar el Administrador de tareas.

Por qué estoy publicando esta pregunta

Para mi vergüenza, existe una popular aplicación empaquetada que cuelga cada vez que encuentra un error excepcional en un cuadro de diálogo modal. Cuando hicimos un cambio masivo de códigos de error enteros a excepciones, fui responsable de elegir std :: exception como la clase base para las excepciones arrojadas. No fue hasta que se realizó una gran cantidad de trabajo en la conversión que nuestras pruebas descubrieron este problema, y ​​para entonces ya era demasiado tarde para cambiar. Con suerte, esta pregunta / respuesta evitará que alguien cometa el mismo error.


La respuesta de Mark es correcta. Para un análisis mucho más riguroso de este problema y una sugerencia detallada para manejarlo en su propio código, consulte estas preguntas frecuentes de Doug Harrison (en particular, la sección Q6).


Si está interesado en conocer cómo Windows detecta los apphangs, hemos agregado algunas publicaciones a este en el blog de informes de errores de Windows:

Deja que se cuelgue la parte 1 de 4

Deja que se cuelgue la parte 2 de 4

Deja que se cuelgue la parte 3 de 4

Deja que se cuelgue la parte 4 de 4

Es importante tener en cuenta que esta información cuando se envía a través de Windows Error Reporting de Microsoft se comunica a los desarrolladores de software para tratar de solucionar estos problemas. ¡Si envía sus informes de errores, ayudará a solucionar los problemas que están ocurriendo en su PC!

Soy un administrador de programa en Microsoft en el equipo de informes de errores de Windows.