まずはじめに、
例外の種類は2種類あります。チェックされた&チェックされていません。
チェックされていない例外は、プログラムが回復できない例外です。 NullPointersのように、あなたのロジックに何かが本当に間違っていることを伝えます。
チェックされた例外は実行時の例外であり、これらの例外から復旧できます。
したがって、「例外」基本クラスを探すcatch statemensは使用しないでください。両方の時間を表す。特定の例外(通常はランタイム例外のサブクラス)を探すことを検討するべきでしょう。
要するに、これ以上のことがあります。
ワークフローとして例外処理を使用しないでください。通常、あなたのアーキテクチャには何らかの欠陥があることが示されます。そして、名前が述べるように、それらは通常の実行に対する「例外」として扱われるべきです。
for(DataSource source : dataSources) {
try {
//do something with 'source'
} catch (Exception e) { // catch any exception
continue; // will just skip this iteration and jump to the next
}
//other stuff ?
}
それがあるとして、それは例外をキャッチし、上に移動する必要があります
今、あなたのコードを検討。たぶんあなたに私たちに言わないことがありますか? :P
とにかく、これが役立ちます。
ここにあなたが持っているロジックはまさにそれをします。例外が 'DataSource'を無効な状態にすると、イテレータを使用しようとする次の試みは異なる例外をスローする可能性があります。 –