質問

時々見かけます

try {

} catch(Throwable e) {

}

そして時折

try {

} catch(Exception e) {

}

違いはなんですか

役に立ちましたか?

解決

Throwableを引くことにより、そのサブクラスErrorものを含んでいます。あなたは、一般的に、おそらくあなたはログインしたり、そうでない場合は間違って行くことができます絶対にすべてを処理したいスレッドのレベル「全てを捕まえる」非常に最高のを除いて、それを行うべきではありません。それは、未知のコードを実行することができる場所(例えば、アプリケーション・サーバーやテストフレームワーク)フレームワークのタイプのアプリケーションで、より典型的であるとそのコードとうまくいかないことの何でものによって影響されるべきではない、など可能な限ります。

他のヒント

最初のものは、次のすべてのサブクラスをキャッチします。 Throwable (これも Exception そして Error)、2 番目のものは、のすべてのサブクラスをキャッチします。 Exception.

Error プログラム的にはいかなる方法でも回復できず、ログ記録の目的 (再度通過する) を除いて、通常は捕捉されません。 Exception プログラムで回復可能です。そのサブクラス RuntimeException はプログラミング エラーを示しており、通常は捕捉されません。

Throwableは、スーパーExceptionのクラスだけでなく、Errorです。根本的な原因が失われないように、通常のケースでは、我々は常に、Exceptionのサブクラスをキャッチする必要があります。

あなたは、Javaコードの制御にされていない間違って物事の可能性を参照してください。

特殊な場合のみ、あなたはErrorThrowableをキャッチする必要があります。

  

私はネイティブライブラリがロードされていないフラグにThrowableをキャッチ覚えています。

Thowableは廃止Thread.stop()メソッドからスレッドを停止するために、デフォルトで投げます、本当にすべてのものさえのThreadDeathをキャッチ。だから、Throwableを引くことによって、あなたは、少なくともあなたのcatchブロックを経由せずにtryブロックを離れることは決してないだろうことを確認することができますが、あなたもOutOfMemoryErrorInternalErrorまたはStackOverflowErrorを処理するために準備する必要があります。

そのデリゲートにThrowableは、外側のサーバに最も有用である外のコードへの要求のすべての種類をループキャッチが、自身が生きているサービスを維持するために終了しないことがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top