Es posible que no desee enviar una excepción. Hay muchos códigos en el JDK que dependen de las excepciones para funcionar normalmente. En lo que supongo que estás más interesado son las excepciones no detectadas. Si está capturando las excepciones, debe manejar las notificaciones allí.
En una aplicación de escritorio hay dos lugares de qué preocuparse, en el event-dispatch-thread (EDT) y fuera del EDT. Globaly puede registrar una clase implementando java.util.Thread.UncaughtExceptionHandler
y registrarla a través del java.util.Thread.setDefaultUncaughtExceptionHandler
. Se llamará a esto si una excepción llega al final de la pila y no se ha establecido un manejador en la instancia actual de la cadena o en el ThreadGroup.
El EDT tiene un gancho diferente para manejar excepciones. Una propiedad del sistema 'sun.awt.exception.handler'
debe estar registrada con el nombre de clase completamente calificado de una clase con un constructor de argumento cero. Esta clase necesita un identificador de método de instancia (Throwable
) que haga su trabajo. El tipo de devolución no importa, y dado que se crea una nueva instancia cada vez, no cuente con mantener el estado.
Así que si no le importa lo que el hilo se produjo la excepción en una muestra puede tener este aspecto:
class ExceptionHandler implements Thread.UncaughtExceptionHandler {
public void uncaughtException(Thread t, Throwable e) {
handle(e);
}
public void handle(Throwable throwable) {
try {
// insert your e-mail code here
} catch (Throwable t) {
// don't let the exception get thrown out, will cause infinite looping!
}
}
public static void registerExceptionHandler() {
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler());
System.setProperty("sun.awt.exception.handler", ExceptionHandler.class.getName());
}
}
Añadir esta clase en algún paquete al azar, y luego llamar al método registerExceptionHandler
y que debe estar listo ir.
Al trabajar con Java 7 o posterior, es posible que desee comprobar las respuestas a http://stackoverflow.com/questions/95767/how-can-i-catch-awt-thread-exceptions-in-java?lq=1 – Suma