Il titolo è un po 'vago quindi proverò ad elaborare.
Ho una funzione
makeFoo(int bar) -> returns Foo or throws Exception.
Ho anche una versione batch di questo
makeFoos(int[] bars) -> returns Foo[]
che in pratica scorre su barre ed esegue makeFoo () su di esse.
Il problema è, se durante l'esecuzione di makeFoos (), makeFoo () genera un'eccezione, cosa devo fare? Non voglio uscire da makeFoos () perché voglio continuare a elaborare il resto delle barre. Ma anche, voglio mantenere l'eccezione che è stata lanciata.
La mia soluzione iniziale è, invece di restituire Foo [], restituisco Result < Foo > []. Dove Result è una classe wrapper:
class Result<T>:
T data;
Exception e;
C'è un modo migliore di avvicinarmi a questo?
Modifica: mi scuso se questo è considerato un post duplicato, ma ho postato una versione più generale di questa domanda qui: link