2012-04-12 12 views
0

Ich benutze Java mit Netbeans IDE und ich versuche, in das Ausgabefenster zu debuggen. Mein Protokoll druckt mit Ausnahme von Ausnahmen im Ausgabefenster, die dazu neigen, bei der Ausführung des Codes vor ihrer Reihenfolge zu drucken. Hier ist ein Beispiel für den Ausgang -Java Debugging - Nebenläufigkeit von Ausnahmen

19: 45: 53.266: Überprüfen, um zu sehen, ob wir vergangen sind Startpunkt 19: 45: 53.267: Fehler in SortRequestIdList. Ausnahme = [Ljava.lang.Object; kann nicht in [Ljava.lang.String; 19: 45: 53.266: Wir sind hinter dem Startpunkt. Überprüfen, um unsere Position relativ zu den Grenzen zu sehen 19: 45: 53.266: Wir sind unter der unteren Grenze. Info zum Ausführen von RunnerBelow 19: 45: 53.267: Fehler in ListLex. Ausnahme = null 19: 45: 53,266: * Eingabe RunnerBelow *

So sind die Ausnahmen drucken 'vor der Zeit'. Gibt es eine Möglichkeit, die Kontrolle darüber zu bekommen, wann diese drucken (Ereignis A läuft vor Ereignis B) => (Debug-Ausgabe für A erscheint vor Ereignis B)?

Danke für jede Hilfe, die Sie Jungs mit diesem Angebot bieten könnten!

Chris

Antwort

1

printStackTrace verwendet System.err, während für alle anderen Ausgang haben Sie wahrscheinlich System.out verwenden. Verwenden Sie entweder System.err.println in Ihrem Code (einfache Lösung), oder erstellen Sie eine Methode, die eine Ausnahme akzeptiert und ihr Stacktrace auf System.out (ziemlich viel schwieriger) drucken.

2

Ausnahmen werden normalerweise mit System.err gedruckt, während normale Debug-Meldungen in System.out geschrieben werden. Da zwei verschiedene Streams zum Erstellen der Ausgabe verwendet werden, sehen Sie manchmal Exceptions, die vor Debug-Meldungen geschrieben werden, die vor der Exception aufgetreten sind.

Wenn Sie den Code ändern können, der die Nachrichten erzeugt, würde ich vorschlagen, die Ausgabe zu System.out in Ihrem catch-Block hinzuzufügen. (Sie könnten System.out.println (e.getMessage())) verwenden. Wenn dies nicht möglich ist, könnten Sie die relevanten Debug-Meldungen an System.err ausgeben.

+0

Ah, danke, macht Sinn. Ich kann die Verwendung von System.err entfernen, aber sie sind nützlich, weil sie meine Ausgabe in Rot hervorheben, während alles andere schwarz ist. Gibt es eine Möglichkeit, die Ausgabetextfarbe zu wählen? Vielen Dank! -Add: Ich werde mit http://www.diogonunes.com/it/work/jcdp/ spielen) –

+0

JCDP sieht vielversprechend aus, noch nie zuvor davon gehört. Obwohl ich nicht sicher bin, ob es mit der NetBeans-Konsole funktioniert. Ansonsten erfolgt die Farbgebung der System.err-Ausgabe durch Ihre IDE, ich habe keine Erfahrung mit NetBeans, daher habe ich keine Ahnung, ob Sie die Farbe der Ausgabe ändern können, aber Sie sollten sich vielleicht die Eigenschaften ansehen Dort. – pushy

+0

PS - Für alle, die daran interessiert sind, dies zum Laufen zu bringen: Die JCDP-Site stellt die neueste JANSI-JAR-Datei im Download bereit, aber die JANSI-Entwickler haben die Methoden geändert, sodass sie mit JCDP nicht kompatibel sind. Wenn du JCDP verwenden willst, also http://jansi.fusesource.org/download.html und eine frühere Version von JANSI herunterladen (ich habe gerade 1.0 ausprobiert und es funktioniert) –