Wie kann man die Ausgabe einer überlangen Exception verhindern?
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.