一般的なアドバイスは、特別な状況を除き、java.lang.Error をキャッチしないことです。Throwable をキャッチするのは悪い習慣ですか? を参照してください。例えば。
私の状況では、時々メモリ不足になり、java.lang.OutOfMemoryError をスローするプログラムがあります。これから回復することはありませんが、それが起こったことを知りたいので、ログに何かがあり、ゼロ以外の終了コードが表示されることを望みます。では、このようなことはお勧めですか?
public static void main(String[] args)
{
try
{
...
}
catch (Exception e)
{
e.printStackTrace();
System.exit(1);
}
catch (OutOfMemoryError e)
{
e.printStackTrace();
System.exit(1);
}
}
別のプログラムも同様ですが、すべてのメモリを消費している特定のスレッドである可能性があります。この場合、そのスレッドが終了すると、処理を続行できます。ここでも、ログを確認し、最終的にゼロ以外の終了コードを取得するだけです。そのスレッド実行メソッドで OutOfMemoryError をキャッチする必要がありますか?