2013-08-29 18 views
6

Ho sviluppato un'app Web in Spring + Hibernate negli ultimi mesi. Quello che mi è mancato seriamente è la gestione delle eccezioni.miglior approccio e pratiche per gestire le eccezioni in primavera?

Desidero conoscere gli approcci e le procedure migliori per gestire l'eccezione? Ho alcune domande nella mia mente che non potrebbero riguardare tutti gli aspetti della gestione delle eccezioni come:

1.Come fare check o deselezionare Eccezione? Come decidere?

2.Come gestire e cosa fare con le eccezioni generate nel controller.

3. Per quanto riguarda le eccezioni generate nel livello di servizio e nel livello DAO, dovrebbero essere gestite solo in tale livello o deve essere trasferito al livello controller?

4. Poiché ci potrebbero essere numerose eccezioni, come potrei essere preparato a gestire quelle che potrebbero venire in futuro?

5. Come posso visualizzare messaggi rilevanti per l'interfaccia utente o il browser?

Si prega di suggerire o fornire collegamenti a buoni blog?

risposta

9
  1. Usa eccezioni controllate se v'è la ragionevole aspettativa che il cliente può gestire e recuperare l'eccezione utilizzare in altro modo non controllato (si lo più utilizzare incontrollato).
  2. Utilizzare l'annotazione @ExceptionHandler su un metodo per gestire le eccezioni generate dai metodi @RequestMapping.
  3. throw al controller in modo che possa decidere la risposta migliore, a meno che il metodo di servizio non sia effettivamente in grado di eseguire il ripristino dall'eccezione e procedere normalmente all'elaborazione.
  4. Creare eccezioni personalizzate e throw quelli invece (si può passare l'eccezione reale come la causa cioè throw new MyCustomException("my message", e))
  5. Il tuo metodo @ExceptionHandler può decidere cosa vista per tornare per l'utente, oppure è possibile configurare una pagina di errore personalizzato nel web.xml
+0

grazie per la spiegazione. I vostri suggerimenti sono molto buoni potreste fornire alcuni esempi specifici? Possono essere alcuni collegamenti. – beinghuman

5
  1. In generale non utilizzare eccezioni controllate, non si desidera utilizzare un'eccezione per il controllo di flusso, accanto a quella maggior parte delle eccezioni non possono essere recuperati in modo allora che cosa hai intenzione di fare? Vedi this related answer.

  2. Per quanto riguarda la gestione delle eccezioni, la molla ha il HandlerExceptionResolver per that. Puoi usarlo per la gestione generale delle eccezioni. Per un controllo più fine è possibile annotare i metodi nel controller con @ExceptionHandler quelli che gestiranno le eccezioni che si verificano solo da quel controller. (Anche se con la nuova @ControllerAdvice è anche possibile registrarsi @ExceptionHandler metodi globali.

  3. In alcuni casi si potrebbe desiderare di intercettare l'eccezione nel controller e gestirli all'interno del controllore (cioè mostrare un avviso all'utente, per esempio).

Come ultima risorsa si può sempre configurare il error-page nel web.xml per una manipolazione molto generico e largo eccezione.

Per ulteriori informazioni, è possibile controllare the exception handling section nella Guida di riferimento Spring.

+0

ciao di nuovo. Questi consigli sono molto buoni ma in realtà sono molto debole nella gestione delle eccezioni. Posso avere bisogno di rivedere i concetti? – beinghuman

Problemi correlati