1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public class JOptionPaneExceptionHandler implements UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) {
// On récupère le StackTrace dans une String :
StringWriter stackWriter = new StringWriter();
e.printStackTrace(new PrintWriter(stackWriter));
// On crée un JTextArea qui contient le stacktrace :
JTextArea stackTrace = new JTextArea(stackWriter.toString());
stackTrace.setEditable(false);
// Que l'on met dans un JScrollPane :
JScrollPane scrollStackTrace = new JScrollPane(stackTrace);
scrollStackTrace.setPreferredSize(new Dimension(400,200));
// On crée le contenu du JOptionPane (message + scrollpane) :
Object[] message = new Object[] {
"Une exception est survenue dans le thread '" + t.getName() + "' : ",
"(le programme va être fermé)", " ",
scrollStackTrace
};
// Et on affiche le tout dans une boite de dialogue :
JOptionPane.showOptionDialog(null, message,
"Erreur d'exécution du programme...",
0, JOptionPane.ERROR_MESSAGE, null,
new Object[] {"Quitter"}, null);
// Puis on ferme le programme
System.exit(1);
}
} |
Partager