Wie von einem anderen Poster erwähnt, besteht Ihr Problem darin, dass die Ausnahme in einem anderen Thread, dem Ereignisversand-Thread, ausgelöst wird. Ein paar Lösungen:
Als Randnotiz sollten Sie im Prinzip aber Ihren UI-Startup-Code in einem SwingUtilities.invokeLater ()
Swing führt Dinge im Event-Thread aus. Sie versuchen, es im Hauptthread abzufangen.
Und beachten Sie, dass Swing nicht threadsicher ist, Sie sollten auch Dinge im Ereignis-Thread tun.
Um die Ausnahme abzufangen, können Sie eine Methode aus dieser Stapelverfolgung überschreiben, wie die paint-Methode Ihrer Komponente.
Und für mich sieht diese Ausnahme wie ein Fehler aus, den Sie beheben sollten, nicht etwas, das Sie verstecken sollten, indem Sie fangen.
Laufzeitausnahmen wie ArrayIndexOutOfBoundsException zeigen einen Programmierfehler. Also könnte es besser sein, sie zu reparieren, anstatt sie zu fangen und still zu kauen.
Nur eine wilde Vermutung für die Ursache der Ausnahme. Etwas entfernt gleichzeitig Zeilen aus dem Datenvektor des Tabellenmodells, sobald die JTable beginnt, die Daten auf dem Bildschirm zu zeichnen.
Die einzigen geeigneten Möglichkeiten, die ich kenne, um Ausnahmen, die aus dem EDT geworfen werden, abzufangen sind:
sun.awt.exception.handler
" (Ich benutze
es und es funktioniert auf allen Sun JDK 1.4,
Mindestens 1,5 und 1,6, plus mindestens IBM JDK 1.4 und 1.5; Ich habe es auf anderen JDK nicht überprüft, obwohl) Sie sollten sich diesen Thread genauer ansehen Überblick über die Lösungen mit ihren Vor- und Nachteilen.
Wie oben erwähnt, besteht das Problem darin, dass die Ausnahme ausgelöst wird - für den Ereignisversand-Thread.
Wenn Sie einen try / catch-Block einrichten möchten, um dieses spezielle Problem zu beheben, würde ich einen in die Paint-Methode der App-Klasse werfen. Überschreibe es und rufe superpaint in einem try catch block auf.
Wenn Sie eine generische Möglichkeit haben möchten, nicht abgefangene Ausnahmen abzufangen, sehen Sie sich Thread.setUncaughtExceptionHandler . Sie rufen diese Methode mit einem Ausnahmebehandler auf, und Sie können mit allen Ausnahmen umgehen, die nicht in Ihrer Anwendung gefangen werden.