C'è una buona pratica è quella di lanciare presto, prendere tardi .
Is it right way to catch the DAO exception in Service layer and convert them to a Service exception?
Sul ServiceLayer, invece di "convertire" un'eccezione (e probabilmente perdere alcune informazioni significative) è meglio ripetere l'eccezione con i dettagli delle operazioni avanzate. Ciò semplificherà ulteriormente l'analisi delle eccezioni poiché, ad eccezione dei dettagli tecnici di basso livello di DAL, ci sarà più descrizione di alto livello dell'intenzione iniziale.
catch the Service exception in Controller class and send a meaningful message to user without disclosing any business entities.
Non dovresti affidarti alle eccezioni per indirizzare il flusso dell'app. Le eccezioni sono per situazioni eccezionali . Nel controller, invece di chiamante API di servizio (e in attesa di un'eccezione da restituire all'utente) puoi progettare la tua API in un modo che ti permetta di chiedere se un'operazione è permesso o meno. In caso contrario, mostrare un errore dell'utente; in caso affermativo, chiama l'API.
Tutte le eccezioni impreviste dovrebbero essere gestite in modo centralizzato in un unico luogo. Puoi restituire un messaggio di errore generale all'utente.