Wie kann man die Ausgabe einer überlangen Exception verhindern?

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.

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.