Java Webアプリケーションに、java.lang.OutOfMemoryError:Javaヒープスペース例外を発生させるスレッドがありますが、try/catchブロックはエラーをキャッチしません。「java.lang.OutOfMemoryError:Java heap space」がキャッチされないのはなぜですか?
サンプルコード:
private void doSomeWork()
{
try
{
processData(); //Causes OutOfMemoryError
System.out.println("This line does not execute");
}
catch (Exception e)
{
System.out.println("Exception. This line does not execute.");
//Log error
}
finally
{
System.out.println("finally. This line does execute");
System.out.println("Thread name: " + Thread.currentThread().getName());
}
}
出力:
finally. This line does execute Thread name: _Worker-8 Exception in thread "_Worker-8" java.lang.OutOfMemoryError: Java heap space ...
背景:
私は最近、このJavaプロジェクトを引き継いだと私は取得しようとしていますJavaとこのプロジェクトでスピードをあげる。私はC#開発者なので、このプロジェクトやJavaにはまだ慣れていません。 -Xmx設定を使用してエラーを修正できますが、このエラーをキャッチしてログに記録することに興味があります。エラーはいずれのログファイルにも表示されず、出力はEclipseのデバッグモードでコンソールに表示されます。
リンク参照の良い回答。私はそれを感謝します、ありがとう! – Crispy
あなたのアプリケーションの最も外側の部分(またはスレッドメソッドの最も外側の部分)にthrowableをキャッチすることをお勧めします。なぜなら、あなたのプログラムがなぜ中止されたのかを実際に知ることができるからです)。 –