Beim Prüfen und Debuggen von Quelltexten stören oft überlange
Error- oder Exception-Ausgaben und verhindern aufgrund der begrenzten
Puffergröße der Konsole ein Auslesen von Werten mittels
System.out().
Die Lösung dieses Problems gestaltet sich sehr einfach:
Es gilt die geworfenen Errors und Exceptions abzufangen und die
Ausgabe des StackTraces zu verhindern.
Hierzu wird der zu prüfende Code-Teil provisorisch in einen
try-catch-Block eingeschlossen. Da manchmal nicht so recht klar ist welche
Exception geworfen werden kann, werden alle Fehler und Ausnahmen
dadurch abgefangen, dass der leeren catch-Anweisung eine Instanz der Klasse
Throwable übergeben wird. Sie ist die Elternklasse
aller Exceptions und Errors.
public class NoTrace {
public static void noTrace(int i) {
try {
if (i == 10) {
System.out.println(i);
noTrace(++i);
}
if (i == 11) {
System.out.println(i);
noTrace(--i);
}
} catch (Throwable t) {
System.exit(0);
}
}
public static void main(String[] args) {
noTrace(10);
}
}
Im gezeigten Beispiel wird eine Methode noTrace()
deklariert, in der
ein int-Parameter wechselweise dekrementiert und inkrementiert wird und
rekursiv der aufgerufenen Methode erneut übergeben wird.
Das Ergebnis ist ein StackOverflowError.
Die Routine läuft innnerhalb des o.a. try-catch-Blocks ab.
Schlägt der Versuch fehl, wird das Programm beendet und
eventuelle Ausgaben sind der Konsole zu entnehmen.
Ein Endloslauf wird auf diese Weise verhindert.