Dopo aver letto molto sull'uso abusivo delle eccezioni in Java e su come dovresti far emergere un'eccezione attraverso i diversi livelli di un'applicazione, sono arrivato a un punto in cui non so cosa dovrei fare con i potenziali errori che la mia applicazione può avere.
Fondamentalmente, ho un webservice che usa il pattern DAO per accedere ai dati nel mio database. Tutte le azioni del database possono generare SQLException
.
Ad oggi, sto usando un try catch per catturare il SQLException
e poi lanciamo un'eccezione definita specifica chiamata ExceptionDAO
che sarà gestita dal webservice per restituire un messaggio corretto agli utenti (un'applicazione mobile) del mio servizio web.
Dopo aver letto molto su come l'eccezione dovrebbe essere eccezionale e non dovrebbe essere usata nel flusso di controllo, ho trovato una comprensione mista di cosa dovrei fare per gestire eventuali errori:
- Utilizza i codici di ritorno per tutto ciò che è probabile che accada (ad esempio, il nome utente esiste già) e quindi, per rispettare il modello DAO, passa i miei oggetti di business come parametri. Potrei anche usare una coppia specifica che restituirebbe invece il codice + l'oggetto business. Il webservice utilizzerà quindi il codice di ritorno per visualizzare un messaggio specifico.
- Utilizza le eccezioni controllate per tutto ciò che non posso prevedere avverrà e lascialo a diventare un webservice per gestire e restituire un messaggio agli utenti. (ad esempio, SQLException che non posso prevedere: connessione interrotta)
- Lasciate che anche le eccezioni non selezionate si aprano e mostrino in questo caso una sorta di errore 404.
Ho anche dato uno sguardo al pattern null, ma non penso che si adatti bene a questa particolare situazione. Sono anche preoccupato di non dare troppe informazioni agli utenti, ma piuttosto utili e direttamente al punto informazioni. In effetti, i messaggi restituiti dal webservice verranno utilizzati da un'applicazione mobile per visualizzare un messaggio all'utente finale.
Spero di essere stato abbastanza chiaro riguardo al problema che sto avendo e non vedo l'ora di ricevere le vostre risposte!
NB. : Questo è il ripubblicare di un argomento che ho postato su StackOverflow, che riguarda la programmazione e non un problema specifico della lingua.