2015-09-16 13 views
11

Sto utilizzando Spring 4 e Tomcat. Il problema è che a volte devo lanciare una RuntimeException (personalizzata) nel mio filtro (il controllo non ha nemmeno raggiunto il controller). Il problema è che non sto lanciando un'eccezione che Tomcat capisce, viene convertita in 500 (errore interno del server). Credo che un Proibito 403 sarebbe meglio di un 500 (Per la mia eccezione personalizzata). Ho dato un'occhiata alle annotazioni @ExceptionHandler e @ControllerAdvice. Ma funzionano solo se il controllo raggiunge il controller.Come gestire le eccezioni generate nei filtri?

A partire da ora sto impostando manualmente lo stato su 403 nel HTTPResponse nel mio filtro. C'è un modo migliore per gestire questo scenario?

+1

Check out [questo post SO] (http://stackoverflow.com/questions/29914717/servlet-filter-specific-exception-handling-in-java). Puoi estendere il filtro e gestire l'eccezione in super. –

+0

@TimBiegeleisen - Bene, ora sto seguendo un approccio simile :). Grazie per aver indicato quel post. – TheLostMind

+0

@TimBiegeleisen Mi sono imbattuto in un problema simile e ho pubblicato una soluzione che potrebbe interessarti qui https://stackoverflow.com/questions/34595605/how-to-manage-exceptions-thrown-in-filters-in-spring/ 43242424 – Raf

risposta

1

si dovrebbe usare qualcosa di simile

Impostazione di un gestore di errori in web.xml

<error-page> 
    <exception-type>java.lang.RuntimeException</exception-type> 
    <location>/handleExceptionService</location> 
</error-page> 

Così, quando si raggiunge il vostro servizio, yo può fare wathever che vuoi con l'errore .

Buona fortuna !!!

0
You can add in web.xml 
<error-page> 
    <error-code>404</error-code> 
    <location>/error-404.html</location> 
</error-page> 
<error-page> 
    <error-code>403</error-code> 
    <location>/access_denied.html</location> 
</error-page>