Sto sviluppando una libreria (Java) che fornisce un'API per leggere un file in un formato specifico in un oggetto. Il formato è fondamentalmente una mappa e specifica valori validi per alcune chiavi e tipi validi per valori per gli altri.
Ad esempio, il valore per colour
può essere solo uno di red
, green
o blue
, mentre la chiave date
deve essere fornita in formato YYYY-MM-DD
.
Inoltre, il file in questo formato deve avere un nome specifico.
Ovviamente, l'API può essere utilizzata con dati non validi, ad es. un file con il nome sbagliato o un file contenente valori non validi, ad esempio colour: orange
o date: last year
.
Inoltre, l'API dovrà gestire scenari come file non esistenti, file in formati completamente diversi, ecc.
Ci sono buone pratiche per questo tipo di scenario? Ad esempio, dovrei lanciare eccezioni di runtime per quest'ultimo tipo di problemi (altro formato, file non trovato, eccezione I / O) che catturo durante la lettura e eccezioni personalizzate per gli altri problemi (nome / valori di file non validi)?
O dovrei restituire una sorta di oggetto di completamento del risultato, ad esempio l'oggetto dati quando è valido e che è stato letto correttamente o un elenco di messaggi di errore raccolti durante la lettura quando qualcosa è andato storto? (Gli altri campi dovrebbero essere nulli o contenere un valore vuoto?)