1) Adjunte un controlador de eventos al evento AppDomain.UnhandledException y registre el objeto de excepción.
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
2) Adjuntar un gestor de excepciones hilo
Application.ThreadException +=
new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Para WPF y Silverlight aplicaciones que utiliza más controladores de excepciones, por ejemplo Application.DispatcherUnhandledException y Application.UnhandledException respectivamente, pero estos no son de su interés en este escenario. Los incluyo para completar.
¿Realiza alguna llamada p/invoke? –
No directamente. Usamos Crystal Reports, que puede hacer tales llamadas. De todos modos, la aplicación funcionó durante un año sin problemas. – alex
¿Utiliza algún componente COM? –