Ich habe einen Thread in einer Java-Webanwendung, der eine Ausnahme java.lang.OutOfMemoryError: Java-Heap-Space verursacht, aber der try / catch-Block fängt den Fehler nicht ab.
Beispielcode:
%Vor%Ausgabe:
%Vor%Hintergrund:
Ich habe dieses Java-Projekt kürzlich übernommen und versuche, mit Java und diesem Projekt Schritt zu halten. Ich bin ein C # -Entwickler, daher kenne ich dieses Projekt oder Java noch nicht. Ich weiß, dass ich den Fehler mit der Einstellung -Xmx beheben kann, aber ich bin daran interessiert, diesen Fehler zu erfassen, damit ich ihn protokollieren kann. Der Fehler wird in keiner der Protokolldateien angezeigt, und die Ausgabe wird in der Konsole im Debugmodus in Eclipse angezeigt.
Weil OutOfMemoryError
ein Error
ist , kein Exception
. Da OutOfMemoryError
keine Unterklasse von Exception
ist, gilt catch (Exception e)
nicht.
OutOfMemoryError
erweitert Throwable
, Sie sollten es jedoch fangen können. Hier ist eine SO-Diskussion , wenn (wenn überhaupt) Fehler auftreten sollten. Da Sie nichts dagegen tun können, sollten Sie keine Fehler im Produktionscode abfangen. Aber in einem speziellen Fall, wo Sie versuchen, zu debuggen, was vor sich geht, könnte es hilfreich sein.
java.lang.OutOfMemoryError erweitert java.lang.Exception nicht, so dass es keine Ausnahme ist. OutOfMemoryError erweitert java.lang.Error. Wenn Sie Fehler abfangen möchten, versuchen Sie Folgendes:
%Vor%Hinweis: Exception and Error erweitert Throwable, sodass Sie Throwable auch zum Abfangen von beiden verwenden können.
Tags und Links java out-of-memory try-catch