アプリケーションのパフォーマンスに悪影響を与えることは知っていますが、コードの場所を囲むべきではありません。
try {
// code
} catch (OutOfMemoryError ex) {
// handling code
}
かなり安全そうです。
ドキュメントから:
Error は、Throwable のサブクラスであり、合理的なアプリケーションがキャッチしようとすべきではない重大な問題を示します。
なぜだめですか?
アプリケーションのパフォーマンスに悪影響を与えることは知っていますが、コードの場所を囲むべきではありません。
try {
// code
} catch (OutOfMemoryError ex) {
// handling code
}
かなり安全そうです。
ドキュメントから:
Error は、Throwable のサブクラスであり、合理的なアプリケーションがキャッチしようとすべきではない重大な問題を示します。
なぜだめですか?
通常、これらのエラーを処理しようとすべきではない理由は、多くの場合、エラーに対してできることは何もないからです。
これらは、アプリケーション レベルのエラーではなく、JVM レベルのエラーである傾向があります。ここでは、OutOfMemory が良い例です。JVM がメモリ不足になった場合、プログラムはどうしますか? そして、それをキャッチしたとしても、スローされた終了条件を考えると、処理コードが一貫した方法で完了/続行するという保証はありません
エラーをキャッチできることを意味する、スロー可能なものは何でもキャッチできます。しかし、エラーは重大な問題を表しており、キャッチすることはお勧めできません。
Java API から:
「エラーは、合理的なアプリケーションがキャッチしようとすべきではない重大な問題を示す Throwable のサブクラスです。そのようなエラーのほとんどは異常な状態です。「通常の」状態ですが、ThreadDeath エラーも Error のサブクラスです。 >アプリケーションはそれをキャッチしようとすべきではありません。」
エラーは、アプリケーションの重大な問題を表しています。たとえば、OutOfMemoryErrorは、メモリ不足のために がオブジェクトを割り当てるJava Virtual Machine
ことができず、ガベージ コレクタによって使用できるメモリがなくなった場合にスローされます。したがって、キャッチしても実際の問題が解決されない場合は、プログラムでこのエラーをキャッチしても解決策が得られず、エラーが発生しやすいアプリケーションが発生する可能性があります。したがって、エラーをキャッチすることはお勧めできません。OutOfMemoryError
increasing the memory
JVM が期待どおりに動作しなくなった場合、または動作する寸前である場合、エラーが発生します。エラーをキャッチした場合、catch ブロックが実行される保証はなく、最後まで実行される保証はさらにありません。
また、実行中のコンピューター、現在のメモリの状態にも依存するため、テストして最善を尽くす方法はありません。危険な結果しか得られません。
コードの可読性も低下します。
Error
実際にこれを推測できないタイプは、次のperticular block of Code
ようになります。
try {
// not guaranty OutOf memeroy Exception will come from this block
} catch (OutOfMemoryError ex) {
// handling code
}
そのため、お取扱いいたしません。
ヒープ スペースまたは perm gen スペースがいっぱいの場合に、OutOfMemoryError をキャッチし、catch ブロックで何らかの作業を行う意味は何ですか? 実際には、この例外が実際にどこで発生するかを推測することはできません。この例外をキャッチするロジックはありません。