Questa non è una domanda in bianco e nero che potrebbe ricevere una risposta come "A is always better" o "Avoid B a tutti i costi", ma generalmente:
Il modo preferito sono le eccezioni, non i risultati di stato.
(E per motivi di coerenza è meglio evitare la conversione tra i due se non si ha una buona ragione. In questo caso, non vedo.)
I frammenti di codice che hai postato sono codice di livello superiore. Quando si scrive codice di primo livello, (dove può essere sensato cercare di intercettare eccezioni), l'uso di eccezioni può sembrare complicato e inutilmente prolisso rispetto all'utilizzo dei risultati di stato. Tuttavia, è necessario considerare che il codice di livello superiore non è l'unico codice che costituisce un'applicazione non banale; questo metodo InsertOperator()
può rappresentare (o può essere invocato da) un albero di chiamate a diversi livelli, costituito da centinaia di righe di codice, in cui ogni metodo richiamato deve restituire un risultato di stato e ogni chiamante deve essere Assicurati di controllare questo risultato dello stato e prendere le misure appropriate se non ha successo. Abbastanza spesso i programmatori dimenticano quella roba; è quando avvengono errori difficili da trovare.
Con le eccezioni, il codice al di sotto del livello superiore che non ha bisogno di gestire un'eccezione non deve contenere un blocco try-catch
e se deve occuparsi di eccezioni solo allo scopo di lasciare le cose come trovato, può semplicemente usare try-finally
invece di try-catch
. Questo in genere si traduce in un codice molto più semplice, molto più strutturato, molto più comprensibile e molto più gestibile rispetto al tipo di codice spaghetti che abbiamo usato per scrivere nei giorni dei codici risultato, prima che le eccezioni fossero state inventate.
Naturalmente, come sempre, ci possono essere buoni motivi per scegliere i codici risultato invece delle eccezioni. Come hanno già indicato altre risposte, se qualcosa deve accadere così spesso da non essere considerato una "situazione eccezionale", allora forse non dovrebbe essere espresso come un'eccezione e la penalità legata al lancio di un'eccezione potrebbe essere proibitiva . Ma nel tuo caso, non riuscire ad aggiungere un "utente" o un "operatore" sembra una situazione abbastanza grave ed eccezionale da giustificare proprio questo: un'eccezione.