Frage

Für Desktop-Anwendungen, ist es sinnvoll, die Stacktrace auf der GUI, um zu sehen, wenn das Programm abstürzt. Ich implementiert diese in Java durch System.err mit meiner eigenen Fehlerbehandlung ersetzt, die alle Fehlermeldungen in eine GUI-Komponente leitet und eine Textdatei.

Das Problem: Nicht wenige Bibliotheken gibt (zum Beispiel Apache POI) nicht nur zu System.err schreiben, wenn ein Absturz auftritt, sondern auch Ausgang einfache Warnmeldungen. Dies bewirkt, dass die Crash-Fenster unnötig Pop-up. Also meine Frage ist, ob jemand weiß, wie man (1) die Stacktrace zeigen, wenn das Programm abstürzt, während (2) nicht bei Warnmeldungen angezeigt?

[Bearbeiten] Meine GUI ist in SWT geschrieben.

War es hilfreich?

Lösung

Sie können die eigenen Exception-Handler installieren. Eine Technik für Swing erklärt hier: http : //ruben42.wordpress.com/2009/03/30/catching-all-runtime-exceptions-in-swing/ . Eric Burke hat auch schöne Artikel zu diesem Thema . Eine weitere allgemeine Technik wird mit Thread.setDefaultUncaughtExceptionHandler , die beim Gewindewerkzeug aufgrund Ausnahme genannt wird (nach Kommentaren in den ersten erwähnten Artikeln, Schaukel Faden nicht stirbt, so abgefangene Exception-Handler Einstellung nicht funktioniert für Swing , aber Erics Artikel verwendet diese Technik).

Ihre Exception-Handler kann dann Fehler angezeigt werden, melden Sie es, oder tun, was Sie wollen, ohne sich um einen anderen Code unter Verwendung von Standard-Ausgang / Fehlerströme.

Andere Tipps

Ich denke, das Problem von den falschen Winkeln sind nähern. Sie sollten einen Dialog auftauchen werden, wenn es Ausnahmen gibt, nicht nur, wenn es Ausgabe System.err ist. System.err ist mehr wie ein Logging-Programm.

Für alle geprüften Ausnahmen, sollten Sie sich von Fall zu Fall in Ihrem Code behandeln. Entweder ein Dialog auftauchen, melden sie, oder sie ignorieren (aber in diesem Fall sicher sein, dass es wirklich sicher ist, dies zu tun)

alle verbleibenden ungeprüften Ausnahmen zu fangen, können Sie etwas tun: http: // www .javaspecialists.eu / archive / Issue081.html , um sicherzustellen, dass Sie diejenigen sind immer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top