try catch での Throwable と Exception の使用の違い
-
20-09-2019 - |
質問
時々見かけます
try {
} catch(Throwable e) {
}
そして時折
try {
} catch(Exception e) {
}
違いはなんですか
解決
Throwable
を引くことにより、そのサブクラスError
ものを含んでいます。あなたは、一般的に、おそらくあなたはログインしたり、そうでない場合は間違って行くことができます絶対にすべてを処理したいスレッドのレベル「全てを捕まえる」非常に最高のを除いて、それを行うべきではありません。それは、未知のコードを実行することができる場所(例えば、アプリケーション・サーバーやテストフレームワーク)フレームワークのタイプのアプリケーションで、より典型的であるとそのコードとうまくいかないことの何でものによって影響されるべきではない、など可能な限ります。
他のヒント
Throwable
は、スーパーException
のクラスだけでなく、Error
です。根本的な原因が失われないように、通常のケースでは、我々は常に、Exception
のサブクラスをキャッチする必要があります。
特殊な場合のみ、あなたはError
やThrowable
をキャッチする必要があります。
私はネイティブライブラリがロードされていないフラグにThrowableをキャッチ覚えています。
Thowable
は廃止Thread.stop()
メソッドからスレッドを停止するために、デフォルトで投げます、本当にすべてのものさえのThreadDeathをキャッチ。だから、Throwable
を引くことによって、あなたは、少なくともあなたのcatchブロックを経由せずにtryブロックを離れることは決してないだろうことを確認することができますが、あなたもOutOfMemoryError
とInternalError
またはStackOverflowError
を処理するために準備する必要があります。
そのデリゲートにThrowable
は、外側のサーバに最も有用である外のコードへの要求のすべての種類をループキャッチが、自身が生きているサービスを維持するために終了しないことがあります。