ALLE exceptions in Log fenster anzeigen

dermoritz

Bekanntes Mitglied
Ich hab das schon of bei anderen Programmen gesehen und selbst nur bei QT(C++) gemacht:

Ich würde gerne alle "Throwables" die beim Programmablauf geworfen werden fangen und deren Nachricht in ein Logfenster schreiben. Natürlich ist die Hoffnung das es keine gibt, aber ohne so ein Mechanismus sind die Exceptions bei einer Swinganwendung ja unsichtbar und das ist Mist.

Meine erste Frage wäre: wo baue ich den allesumfassenden try-catch-böock hin? Ein Gui aufruf in der Main sieht ja of so aus(so generiert es Matiss - netbeans' gui builder):
[Java]
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch ...

...
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
meineGui gui = new meine14Gui();
gui.setVisible(true);
}
});
}
[/code]
Wo soll der alles fangende try-catch-block nun hin. Alles umfassen? InvokeLater umfassen? oder den run-Block oder nur "...new meineGui"?
Die 2. Frage ist, wie das ganze praktisch in Java funktioniert, mit welcher Klasse ("Logger", "Log4j"?) Und wo und wie wird das dann eingebaut?

Danke im Voraus
 
G

Gast2

Gast
Mit einem "allumgreifenden try-catch-block" kommst du nicht weiter.
Ich würde mir mal log4j anschauen, das gefällt mir persönlich ganz gut. auf dieser Seite findest du ein paar Beispiele:
Logging mit Log4j
 

dermoritz

Bekanntes Mitglied
danke mal bis hier, insbesondere "setDefaultUncaughtExceptionHandler" ist eben genau das was ich brauche. Hat das schon jemand mal probiert? Eventuell sogar mit logging?

EDIT: ich hab mir mal im Java-Insel-Buch den Abschnitt durchgelesen. Ich glaube "(setDefault)UncaughtExceptionHandler" hilft nur etwas wenn der Thread durch eine Exception beendet wird. Dann kann man mit hilfe dieses Konstrukts noch einen halbwegs kontrollierten Abgang gewährleisten.

In meinem Fall geht es aber um "normale" Exception, bzw. in einer Swinganwendung stören ja Exceptions den Thread gar nicht (Das Fenster bleibt meist offen) und wenn man so eine Anwendung nicht in einer Konsole startet merkt man oft gar nix von den Exeptions! Aber ich will etwas von denen merken.
 
Zuletzt bearbeitet:

KrokoDiehl

Top Contributor
Hat das schon jemand mal probiert? Eventuell sogar mit logging?
Ja. Aber ich habe auch log4j dafür benutzt und das über einen eigenen Appender (geerbt von der log4j-Klasse) verwendet, um es in einer JTable anzeigen zu lassen.
Ich weiß nicht ob es der Königsweg ist, aber es geht so wie ich's wollt :)
 
G

Gast2

Gast
wie kommt man an diese Exceptions ran die ansonsten nur in der Konsole zu sehen wären?
Du kannst dir einen eigenen System.out bzw. System.err setzen (System.setOut(...)). So kommst du dann auch an alle Fehlermeldungen die dir sonst nur auf die Konsole geschrieben würden.
Ich habe es bei mir so gemacht dass ich über diesem Weg die Fehlermeldungen dann an log4j übergeben habe. Dort habe ich dann drei Appender konfiguriert (DaylyRollingFileAppender, ConsoleAppender und nen eigenen ums gefärbt in eine JTextArea zu schreiben.
 

KrokoDiehl

Top Contributor
Die Sache ist ja, dass du dich an vielen Stellen selbst um eine Ausnahmebehandlung kümmern musst. Allein schon wenn man was mit Dateien macht kommt man um ein
Code:
catch (IOException)
oder
Code:
throws IOException
nicht umhin.
An jenen Stellen muss man eben schauen, wie man die entstandenen Ausnahmen weiterleitet / -behandelt.
Ansonsten gibt es den bereits erwähnten UncaughtExceptionHandler, den man an die ThreadGroup hängen kann. Der krieg die übrigen Ausnahmen mit.

Bei einer log4j Lösung ist das Bequeme, dass man direkt darüber die Ausgaben/Protokolling machen kann.
 

dermoritz

Bekanntes Mitglied
Wie gesagt mir geht es um Ausnahmen die man vergisst, die aber das System nicht abschießen. Z.b. einen Button der bei Knopfdruck was machen soll aber stattdessen eine Exception wirft. Falls man die Gui nicht in einer Konsole gestartet hat sieht man diese Exception nicht und der Knopf macht einfach nix.
Diese Teile muss man erstmal fangen - wie ich uncaughtException-dingens verstehe hilft das nur falls der Thread sich auf Grund einer Ausnahme beendet - ist das so?
Falls das So ist wäre eben die Frage wie ich an die Ausnahmen komme (was ich dann mit Ihnen anstelle ist hier nicht die Hauptfrage): Also soll man alles was in der main ist in einen try-catch-block packen? Oder nur den Aufruf der Gui oder eben dieses "runnable" -Konstrukt der Swing Gui?
Ich kann mir irgendwie nicht vorstellen, dass es da kein Best Parctice gibt (bei jeder Gui will man doch eigentlich sicher sein, das Ausnahmen nicht in der nicht vorhandenen Konsole verschwinden?!)
 

KrokoDiehl

Top Contributor
Der UncaughtExceptionHandler tut schon das, was der Name suggeriert. Für dein Vorhaben ist er bestimmt geeignet. Ich habe ihn auch benutzt und bekomme (in Zshg mit dem Logging) nun alle Ausnahmen darüber und finde in der Stdout keine mehr.
Es gibt ja auch die statische Methode
Code:
set[B]Default[/B]Uncaught...()
. Das gilt dann für alle zukünfigen Threads.
Natürlich kann ein Thread aufgrund einer Ausnahme beendet werden, das ist in der EventQueue völlig normal, wenn ein Ereignis bearbeitet wird, dabei aber eine Ausnahme fliegt. Damit ist die Bearbeitung auch zu Ende.

Ansonsten: Probier es aus :)
 

dermoritz

Bekanntes Mitglied
Dann mal vielen Dank an alle! Nun hab ich glaube alle Bausteine zusammen.

AOP - Aspect Oriented Programming? - schau ich mir frühestens beim nächsten Projekt an. Wüde sich dieser Ansatz lohnen wenn das einzige "cross cutting"-Element das Logging ist?
 

Noctarius

Top Contributor
Kommt drauf an. Ich hab immer generelles Logging in der Anwendung per log4j. Wenn ich aber spezielle Sachen abfragen will, z.B. Aufruf-Reihenfolge von Methoden oder so ähnliches greife ich auf AOP zurück, welches nachträglich schnell per Config an jedem Methodenaufruf gehangen werden kann.
Kommt halt drauf an was du mit Logging meinst. Standard-Logging der Anwendung würde ich auch mit log4j oder anderen Frameworks erledigen, Debug-Logging ist mit AOP sicher der bessere Weg (zumal kein Code in der Anwendung dafür hinterlegt werden muss).
Bei (uncaught) Exception-Logging an ist das meiner Meinung nach schwieriger, das ist so ein Zwischenfall. AOP ist dann Klasse wenn du eine / mehrere Sorten Exceptions explizit fangen willst. Quasi alles abgeleitet von RuntimeException oder alle SQLExceptions oder oder oder. Nicht immer will man schließlich wirklich alles fangen und loggen.
 

dermoritz

Bekanntes Mitglied
so inzwischen hab ich das mal probiert (uncaughtExdeptionHandler + java logging) - funktioniert einwandfrei. Danke nochmal!
AOP werde ich auch im Auge behalten - das derzeitige Projekt ist dafür noch nicht geeignet. Noch eine Frage zu log4j was ist daran besser (falls überhaupt vergleichbar) als java.util.logging.logger?
 
M

maki

Gast
Noch eine Frage zu log4j was ist daran besser (falls überhaupt vergleichbar) als java.util.logging.logger?
java.util.logging.logger ist ein Abklatsch von log4j, kann nicht soviel, speziell im Enterprise Bereich ist log4j ein Quasi Standard.
Ansonsten gibt es noch SLF4J, commons-logging, etc. pp., komt imho aber alles nicht an log4j ran.
 
M

maki

Gast
k.A. ob SLF4J der Nachfolger werden sollte, verwenden tue ich es nur wenn nötig, weil zB. Spring auf commons.logging beharrt.

Irgendwer hat mal gesagt dass diese ganze "Java Logging Szene" ganz schön lächerlich ist :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
_user_q JavaFX Wie kann ich alle Objekte außer eins deaktivieren (das Gleiche mit BoxBlur)? AWT, Swing, JavaFX & SWT 11
Davee JavaFX JavaFX Jar ausführbar jedoch nicht alle Stages AWT, Swing, JavaFX & SWT 3
F JFrame zeigt nicht alle Elemente auf anhieb an AWT, Swing, JavaFX & SWT 4
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
D JavaFX Alle Knöpfe auf die gleiche Größe AWT, Swing, JavaFX & SWT 14
M Gui-Form alle Labels anzeigen AWT, Swing, JavaFX & SWT 4
M Alle Schriftarten in JComboBox AWT, Swing, JavaFX & SWT 5
X Swing setContentPane verdeckt mir alle Buttons Labels etc... AWT, Swing, JavaFX & SWT 14
N Swing Alle Objekte anzeigen auch bei JPanel-Überlappung AWT, Swing, JavaFX & SWT 6
Bluedaishi JTable alle Zeilen löschen AWT, Swing, JavaFX & SWT 7
J CellEditorListener wird für ALLE Zellen ausgeführt AWT, Swing, JavaFX & SWT 2
T Alle Swing-Elemente anzeigen AWT, Swing, JavaFX & SWT 9
A JDialog (modal) blockiert alle Fenster! AWT, Swing, JavaFX & SWT 2
J Alle Komponenten eines JFrames durchlaufen AWT, Swing, JavaFX & SWT 2
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
C Swing JTattoo - Look and Feel für ALLE User AWT, Swing, JavaFX & SWT 5
T Swing Font für alle Komponenten ändern AWT, Swing, JavaFX & SWT 2
A Swing Alle Komponenten auf JFrame ermitteln AWT, Swing, JavaFX & SWT 4
O JFrame: Daten alle paar Sekunden aktualisieren AWT, Swing, JavaFX & SWT 3
X Alle Components eines JPanels Enablen AWT, Swing, JavaFX & SWT 7
AyKay SWT (alle) Listener bzw. ModifyEventListener entfernen AWT, Swing, JavaFX & SWT 2
D Funktion JList.getSelectedValues() gibt nicht alle values zurück AWT, Swing, JavaFX & SWT 2
E Swing TableCellRenderer für alle Splaten setzen?! AWT, Swing, JavaFX & SWT 3
V Alle offenen jDialoge schliessen AWT, Swing, JavaFX & SWT 3
M Alle Frame Methoden AWT, Swing, JavaFX & SWT 2
L 3D-Grafik Java3D - Alle SceneGraphObjects geordnet erhalten AWT, Swing, JavaFX & SWT 2
F Nicht alle Bilder werden angezeigt AWT, Swing, JavaFX & SWT 2
Iron Monkey Alle Anwendungen werden miniert AWT, Swing, JavaFX & SWT 2
C JTable: Alle selektierten Zellen abfangen AWT, Swing, JavaFX & SWT 13
J alle Ordner in einem Ordner anzeigen(Jlist) AWT, Swing, JavaFX & SWT 44
M Swing Dankeschön an alle AWT, Swing, JavaFX & SWT 8
S Java3D: Alle Objekte in BranchGroup löschen während Laufzeit AWT, Swing, JavaFX & SWT 3
kodela alle Buttons einer ToggleButtonGroup deselektieren AWT, Swing, JavaFX & SWT 2
Milady Annzeigen alle Daten aus der Tabelle AWT, Swing, JavaFX & SWT 6
B MDI Anwendung alle maximierten InternalFrames in Tabs AWT, Swing, JavaFX & SWT 3
J Swing Monospace-Schrift für alle Systeme AWT, Swing, JavaFX & SWT 3
M Swing Alle Elemente eines Panels? AWT, Swing, JavaFX & SWT 9
J Swing Eine(und zwar ein und die selbe) WindowListener Instanz für alle JFrames AWT, Swing, JavaFX & SWT 8
J Swing Alle JFrames AWT, Swing, JavaFX & SWT 18
aze JTextfield nur so breit dass alle zeichen sichtbar sind AWT, Swing, JavaFX & SWT 2
R Swing alle Frames nutzen das gleiche Model AWT, Swing, JavaFX & SWT 2
André Uhres Swing Alle Komponenten eines JPanel aktivieren/deaktivieren AWT, Swing, JavaFX & SWT 4
E Im Frame alle Componenten abrufen AWT, Swing, JavaFX & SWT 2
K Alle Events abfangen mit GlassPane AWT, Swing, JavaFX & SWT 7
T JTree - alle Nodes entfernen AWT, Swing, JavaFX & SWT 8
D JCheckBoxItem in Untermenüs alle gleichzeitig an- bzw. aus AWT, Swing, JavaFX & SWT 3
E Drag&Drop JTable; Renderer füllt alle Zellen AWT, Swing, JavaFX & SWT 10
G Alle Werte einer Spalte in JTable zusammenrechnen AWT, Swing, JavaFX & SWT 2
G Alle Komponenten eines JPanels durchlaufen AWT, Swing, JavaFX & SWT 11
T Alle Folgefenster sollen im Hauptfenster geöffnet werden AWT, Swing, JavaFX & SWT 3
P Alle Komponenten von JPanel in der Mitte entfernen AWT, Swing, JavaFX & SWT 2
G Eine Schiftart für alle Komponenten festlegen AWT, Swing, JavaFX & SWT 6
G WindowListener für alle Fenster AWT, Swing, JavaFX & SWT 4
H <Synth> Alle die sich auskennen Bitte hier rein schaue AWT, Swing, JavaFX & SWT 2
Paule alle Elemente eines SWT Trees AWT, Swing, JavaFX & SWT 8
H JFileChooser für alle Dateien und Directories unterhalb AWT, Swing, JavaFX & SWT 7
C Beim Schließen eines fensters, schließen sich alle AWT, Swing, JavaFX & SWT 5
G Nicht alle Komponenten werden angezeigt AWT, Swing, JavaFX & SWT 8
S Alle EventListener einer JComponent abfragen? AWT, Swing, JavaFX & SWT 3
0 JList alle 20 Sekunden aktualisieren? AWT, Swing, JavaFX & SWT 8
K Graphics-Objekt zeichnet nicht alle Bilder AWT, Swing, JavaFX & SWT 3
M Listener für alle inneren Elemente gültig machen? AWT, Swing, JavaFX & SWT 5
M JList zeigt nicht alle Elemente AWT, Swing, JavaFX & SWT 4
B Alle URLs aller offenen Browser. AWT, Swing, JavaFX & SWT 12
N Alle Pixel-Koordinaten von z.B. g.drawLine(.) speichern AWT, Swing, JavaFX & SWT 7
L Alle Inhalte in BorderLayout.CENTER löschen? AWT, Swing, JavaFX & SWT 2
N Alle Komponenten eines JPanel aktivieren/deaktivieren? AWT, Swing, JavaFX & SWT 5
J [SWT] alle Zellen in einem Tree einzeln selektieren AWT, Swing, JavaFX & SWT 2
T JTree alle nodes expanden AWT, Swing, JavaFX & SWT 4
M Hauptfenster und alle Kinder schließen? AWT, Swing, JavaFX & SWT 7
T Alle Kinder eines JTree bekommen AWT, Swing, JavaFX & SWT 11
G Double-Click f. alle Komps UNIX u. WIN verschieden ? AWT, Swing, JavaFX & SWT 5
P TableCellRender für ALLE Spalten AWT, Swing, JavaFX & SWT 10
G Alle Elemente eines JPanel herausfinden? AWT, Swing, JavaFX & SWT 3
Luma Alle Fenster verstecken und wieder sichtbar machen? AWT, Swing, JavaFX & SWT 6
D Alle Inhalte einer JTextArea in einem JScrollPane löschen AWT, Swing, JavaFX & SWT 2
P JTree: Alle Knoten geöffnet anzeigen AWT, Swing, JavaFX & SWT 2
P JTree: alle Elemente ausklappen AWT, Swing, JavaFX & SWT 3
bernd JTree: alle Laufwerke anzeigen AWT, Swing, JavaFX & SWT 3
B Alle jMenu und JMenuItem in einem Array AWT, Swing, JavaFX & SWT 4
R removeAll() beseitigt nicht alle Komponenten!? AWT, Swing, JavaFX & SWT 11
M JTabbedPane zeigt alle Panels übereinander an :( AWT, Swing, JavaFX & SWT 8
H Exceptions seit java: 1.6.0_65 Umstellung AWT, Swing, JavaFX & SWT 3
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
F JavaFX wirft zufällig Exceptions AWT, Swing, JavaFX & SWT 5
F JavaFX Custom Exceptions AWT, Swing, JavaFX & SWT 5
A JavaFX Sehr viele Exceptions bei Taschenrechner mit JavaFx AWT, Swing, JavaFX & SWT 2
apple_pie1998 Programm gibt plötzlich exceptions aus. AWT, Swing, JavaFX & SWT 4
F L&F Exceptions AWT, Swing, JavaFX & SWT 10
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
B Exceptions werfen und in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
B Exceptions in actionPerformed() weiterleiten AWT, Swing, JavaFX & SWT 9
M suche geeignetes Fenster zur Anzeige AWT, Swing, JavaFX & SWT 49
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
TheSepp Fenster um x Pixel bewegen, wenn man auf dem Knopf drückt AWT, Swing, JavaFX & SWT 10
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben