Ben prima di tutto,
Ci sono 2 tipi di eccezioni. Controllato & Deselezionato.
Le eccezioni non selezionate sono quelle da cui il programma non è in grado di eseguire il ripristino. Come NullPointers, dicendoti che qualcosa è veramente sbagliato nella tua logica.
Le eccezioni controllate sono eccezioni di runtime e da quelle da cui è possibile eseguire il ripristino.
Pertanto, è consigliabile evitare l'uso degli indicatori di cattura che cercano la classe di base "Eccezione". Che rappresentano entrambe le volte Probabilmente dovresti considerare di cercare eccezioni specifiche (normalmente sottoclassi di eccezioni run-time).
In breve, c'è molto di più in questo.
Si dovrebbe anche tenere presente che non si dovrebbe usare la gestione delle eccezioni come flusso di lavoro. di solito indica che la tua architettura è in qualche modo carente. E come afferma il nome, dovrebbero essere trattati come "eccezioni" per un'esecuzione normale.
Ora, considerando che si codice:
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 ?
}
Come lo è, dovrebbe catturare l'eccezione e andare avanti. Forse c'è qualcosa che non ci stai dicendo? : P
In ogni caso, spero che questo aiuti.
La logica che hai ora fa esattamente questo. Se l'eccezione mette 'DataSource' in uno stato non valido, il prossimo tentativo di usare l'iteratore può generare un'eccezione diversa. –