Domanda semplice: qual è la prassi migliore / comune in merito agli errori di lancio per i provider di configurazione dell'applicazione?
Given è una semplice sorgente di configurazione basata su valori / chiavi:
class Configuration
string GetValue(key);
void SetValue(key, value);
O più esteso, con la possibilità di aggiungere / rimuovere elementi chiave / valore
class Configuration
string GetValue(key);
void SetValue(key, value);
void AddKeyValuePair(string key, string value);
void RemoveKeyValuePair(string key);
Non lanciare eccezioni su metodi come GetValue()
ha il vantaggio di non interrompere il flusso dell'applicazione e rendere il codice più facile da leggere a causa della mancanza di gestione delle eccezioni, ecc. Permette anche di usare operatori condizionali nulli (forse monadi) o operatori a coalescenza nulla per es impostazione dei valori predefiniti:
var value = configuration.GetValue("myKey") ?? "Hello World";
Restituisce null
dice semplicemente all'utente: "Whoops, non ha nulla da restituire poiché non è stato impostato nulla / there".
Comunque ..
Se evitassi di lanciare eccezioni, cosa succederebbe se provassi ad aggiungere una coppia chiave / valore che è già disponibile? O imposta il valore con una chiave che non è presente nella memoria sottostante? O rimuovendo una coppia chiave / valore che non è disponibile? Sarebbe ovvio per l'utente che semplicemente non accada nulla quando proviamo a rimuovere una coppia di chiavi non esistente?
Qual è l'approccio preferito per la configurazione dell'applicazione?