Ho una funzione che invia dati al server di una terza parte usando una libreria che hanno fornito. La funzione è molto semplice. Richiede solo un elenco di oggetti da inviare, scorre attraverso ogni elemento dell'elenco e chiama la funzione della libreria di terze parti per caricare un oggetto. Il problema che sto incontrando è che la mia lista di oggetti è abbastanza grande (~ 22.000 voci, anche se ciascuna voce è di circa 240 byte, quindi solo ~ 5 MB in totale), e ottengo sempre eccezioni in parte attraverso il caricamento della lista.
Ricevo una varietà di errori, in genere errori interni del server, ma anche errori relativi a pezzi mancanti al livello in cui la loro libreria funziona.
Una soluzione che ho appena scritto (e testato e ha funzionato!) è di rilevare qualsiasi eccezione durante il processo di caricamento, e quindi di richiamare la mia funzione di upload, ma di passare solo gli oggetti nella mia lista che non l'hanno fatto attraverso il processo di caricamento ancora.
Questo ha funzionato quando l'ho testato, anche se ha catturato undici eccezioni prima di completare le mie 22.000 voci. Qualcosa su come scrivere codice in questo modo mi fa sentire un violentatore.
Ho un paio di idee per migliorare la gestione delle eccezioni:
- Catch solo alcune eccezioni - Ho visto solo tre o quattro diverse eccezioni. Se limito il mio pescato a quegli stessi tre o quattro, il programma sarà più prevedibile (non catturerò qualcosa di non correlato come una connessione di rete persa alla mia estremità, e cercherò di continuare a inviare i miei dati)
- Limita il numero di volte in cui tento di richiamare la mia funzione di caricamento - Supponendo che il loro server sia inattivo, potrei finire in un ciclo infinito. Se lo limito per dire 50 o 100 tentativi, dovrebbe sperare di essere molto più del necessario.
Esiste una best practice standard per questo tipo di situazione? È un abuso di eccezioni?