Pregunta

Un programa de C # es invocado por:

Application.Run (new formClass ());

Me gustaría probar / capturar todo el asunto para atrapar cualquier excepción no detectada. Cuando lo coloco alrededor de este método de ejecución, las excepciones no se detectan; el control solo se devuelve aquí cuando el programa termina después de una excepción no detectada.

¿Dónde puedo poner try / catch para cubrir todo el programa? Gracias!

¿Fue útil?

Solución

Para detectar las excepciones no controladas de Windows Form, conecte el AppDomain.UnhandledException y Application.ThreadException eventos.

De interés: Errores inesperados en aplicaciones administradas

Otros consejos

Básicamente, no puede capturar todas las excepciones cuando usa el proceso de alojamiento CLR predeterminado. Período. Esto se debe a que AppDomain.UnhandledException el evento es solo una notificación, no puede manejar la excepción (lo que significa que no puede evitar que la aplicación finalice después de procesar la notificación).

Sin embargo, puede capturar y manejar todas las excepciones en el subproceso de la interfaz de usuario de una aplicación WinForms utilizando su Application.ThreadException (y controlar el comportamiento a través de UnhandledExceptionMode ). Este controlador no detectará otros subprocesos que produzcan una excepción.

En general, no es una buena idea tratar de manejar todas las excepciones. Usted puede, sin embargo, utilizar el AppDomain.UnhandledException para registrar el error y / o realizar tareas de limpieza importantes (por ejemplo, cerrar una base de datos basada en archivos o lo que sea).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top