import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class ThreadBasedCatcher extends JFrame{ public static void main(String[] args) { new ThreadBasedCatcher().setVisible(true); } public ThreadBasedCatcher(){ Container cp = getContentPane(); JButton crasher = new JButton("Crash"); cp.add(crasher); crasher.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ throw new RuntimeException("Exception"); } }); Thread.setDefaultUncaughtExceptionHandler( new Thread.UncaughtExceptionHandler(){ public void uncaughtException(Thread t, Throwable ex){ System.out.println( "Crash dans le thread " + t.getName()); System.out.println( "Exception: " + ex.toString()); } }); pack(); } }