コードがあります。これは3種類の例外をスローすることができますが、すべての実行時例外が拡張されています。実行時例外処理の種類が異なります
したがって、これらの3つの例外を別々のキャッチで個別にキャッチすると、例外が発生したために別のキャッチに移動します。
3つはすべてRuntimeExceptionsなので、疑いがあります。実行時例外ですが、投げられたのと同じ例外ではないので、最初のキャッチになります。
コードがあります。これは3種類の例外をスローすることができますが、すべての実行時例外が拡張されています。実行時例外処理の種類が異なります
したがって、これらの3つの例外を別々のキャッチで個別にキャッチすると、例外が発生したために別のキャッチに移動します。
3つはすべてRuntimeExceptionsなので、疑いがあります。実行時例外ですが、投げられたのと同じ例外ではないので、最初のキャッチになります。
短い答え:いいえあなたのcatch
ブロックはそれが捕捉されるはずのものをキャッチします。あなたはAwesomeRuntimeException
をキャッチするように指示する、それはそれらをキャッチします。どちらも同じクラスを拡張しているので、それはDistastefulRuntimeException
をキャッチする方法から外に出ません。
Car
オブジェクトの配列を作成してからBike
オブジェクトを挿入するのと同じように、両方ともVehicle
に拡張されているためです。
答えはかなり簡単です:
つまり、これは要件に完全に依存します。異なる例外処理が必要な場合は、別個のcatchブロックが必要です。
だから、ポイントはあなたがどちらかこのだろう、です:NPEのようなキャッチ何かが本当にお勧めしません
try {
...
} catch (IllegalArgumentException iae) {
...
} catch (NullPointerException ne) {
...
...
または
try {
...
} catch (RuntimeException r) {
...
}
...
(;私はちょうどそれを使用しますいくつかのRuntimeExceptionの例として)
あなたの質問は今ですか? –
クール..あなたは何か質問がありますか? – Akshay