(le code exemple ci-dessous est autonome et runnable, vous pouvez l'essayer, il ne sera pas planter votre système :)Est-ce que l'EDT redémarre ou non lorsqu'une exception est levée?
Tom Hawtin a commenté la question ici: Why do people run Java GUI's on the Event Queue
que:
Il est peu probable que l'EDT tombe en panne. Les exceptions non vérifiées lancées dans l'envoi EDT sont interceptées, exportées et le thread se poursuit.
Quelqu'un peut-il me expliquer ce qui se passe ici (à chaque fois que vous cliquez sur le « jeter une exception non contrôlée » bouton, une division par zéro est effectuée, sur le but):
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class CrashEDT extends JFrame {
public static void main(String[] args) {
final CrashEDT frame = new CrashEDT();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
final JButton jb = new JButton("throw an unchecked exception");
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Thread ID:" + Thread.currentThread().getId());
System.out.println(0/Math.abs(0));
}
});
frame.add(jb);
frame.setSize(300, 150);
frame.setVisible(true);
}
}
I le message suivant (qui est ce que je pense):
Exception in thread "AWT-EventQueue-0" java.lang.ArithmeticException:/by zero
et moi, c'est une exception non contrôlée non?
Vous pouvez voir que l'ID de thread est incrémenté chaque fois que vous déclenchez le crash.
L'EDT est donc automatiquement redémarré chaque fois qu'une exception non vérifiée est levée ou sont des exceptions non contrôlées "pris, déversé et le thread se poursuit" comme Tom Hawtin a commenté?
Que se passe-t-il ici?
Une note intéressante sur un sujet complètement différent: vous n'avez pas besoin de faire Math.abs (0) pour "tromper" le compilateur pour l'accepter. 0/0 est une expression correcte et lancera également l'exception. [lire plus ...] (http: // stackoverflow.com/questions/2934063/is-1-0-a-legal-expression-java) – aioobe
@aioobe: il il, je sais, je sais, j'ai lu cette discussion ... Mais si avait écrit 0/0 ou 1/0 alors les gens auraient demandé que cette chose compile même :) – NoozNooz42
hahaha ... bon point :-) – aioobe