Hasta ahora, sólo hay que poner un bloque try/catch alrededor del Application.Run
en el punto de Program.cs
entrada al programa. Esto captura todas las excepciones lo suficientemente bien en el modo de depuración, pero cuando ejecuto el programa sin el modo de depuración, las excepciones ya no se manejan. Obtengo el cuadro de excepción no controlada.¿Cómo puedo hacer algo que atrape todas las excepciones 'no controladas' en una aplicación WinForms?
no quiero que esto suceda. Quiero capturar todas las excepciones cuando se ejecuta en modo no depuración. El programa tiene múltiples hilos y, preferiblemente, todas las excepciones de ellos quedan atrapados por el mismo controlador; Quiero registrar excepciones en el DB. ¿Alguien tiene algún consejo sobre cómo hacer esto?
Hice un trabajador de segundo plano, y en el controlador de eventos dowork causé una excepción de referencia nula. Sin embargo, no fue atrapado por AppDomain.CurrentDomain.UnhandledException a pesar de establecer estos: Application.ThreadException + = new System.Threading.ThreadExceptionEventHandler (Application_ThreadException); Application.SetUnhandledExceptionMode (UnhandledExceptionMode.CatchException); AppDomain.CurrentDomain.UnhandledException + = new UnhandledExceptionEventHandler (CurrentDomain_UnhandledException); –
@IsaacB, el trabajador de segundo plano capta excepciones en sí mismo. Puede verificar la excepción en RunWorkerCompleted incluso, mirando la propiedad RunCompletedEventArgs.Error. –
Puede probar el manejo de excepciones para hilos adicionales al poner esto en OnLoad de su formulario principal. nuevo Thread (() => {throw new Exception();}). Start(); Desafortunadamente –