Usted puede utilizar java.lang.Thread.UncaughtExceptionHandler
que captura todas las excepciones que no han cuidado de sí mismo
import java.lang.Thread.UncaughtExceptionHandler;
public class MyUncaughtExceptionHandler implements UncaughtExceptionHandler {
public void uncaughtException(Thread t, Throwable e) {
Frame.showError("Titel", "Description", e, Level.WARNING);
e.printStackTrace();
}
}
registrarlo en su aplicación:
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
}
y en su GUI puede usar org.jdesktop.swingx.JXErrorPane
de SwingX para mostrar un nice popup de error, que informa al usuario sobre las excepciones.
public static void showError(String title, String desc, Throwable e,
Level level) {
JXErrorPane.showDialog(this, new ErrorInfo(title,
desc, null, null, e, level, null));
}
+1 Simplemente asegúrese de pasar su excepción original al constructor de la nueva para que pueda ver el seguimiento completo de la pila así como la causa original. –