Le printemps 3 contrôleur de gestionnaire d'exception problèmes de mise en œuvre
J'espérais mettre en œuvre une seule "ExceptionController" pour gérer les exceptions qui sont jetés dans l'exécution de mes autres contrôleurs de méthodes. Je n'avais pas précisé de quelle HandlerExceptionResolver dans mon contexte de l'application en fonction de la La documentation de l'API la AnnotationMethodHandlerExceptionresolver doit être démarré. J'ai vérifié en tant que tel à la source. Alors pourquoi ne pas les travaux suivants?
@Controller
public class ExceptionController {
@ExceptionHandler(NullPointerException.class)
public ModelAndView handleNullPointerException(NullPointerException ex) {
//Do some stuff
log.error(logging stuff)
return myModelAndView;
}
}
@Controller
public class AnotherController {
@RequestMapping(value="/nullpointerpath")
public String throwNullPointer() {
throw new NullPointerException();
}
}
Je vois dans les journaux de débogage que les trois par défaut, les gestionnaires d'exception sont demandé pour le traitement de l'exception, mais rien n'est fait et je vois "DispatcherServlet - n'a pas Pu terminer la demande". Suivi par l'utilisateur affiché de la stacktrace et 500 erreur Interne.
OriginalL'auteur predhme | 2010-04-13
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que votre gestionnaire d'Exception est de retour une vue qui existe/cartes à un gestionnaire.
a vraiment de résoudre votre problème? J'ai un exemple, tout comme le vôtre, et le @ExceptionHandler méthode n'est appelée lorsque l'exception est générée à partir d'un même contrôleur.
J'ai remarqué que plus tard. Je suppose que la chose la plus importante pour moi était de l'installation de 500 et 404 pages, de sorte que si il y avait quelque chose que je n'ai pas l'attraper, l'utilisateur n'était pas présenté avec une trace de la pile.
OriginalL'auteur dteoh
Vous devez écrire votre exceptionhandler à la même classe avec laquelle vous souhaitez traiter, comme la suivante.
OriginalL'auteur benimben61
Je ne pense pas que ce soit une bonne conception. Les contrôleurs de Printemps gérer les requêtes HTTP et la carte des Url. Je ne pense pas "d'exception" s'inscrit dans bin. Il se sent comme un abus de Printemps pour moi.
Une exception n'est pas une requête HTTP. Vous n'avez pas de carte une exception à une URL. Donc j'aimerais conclure que les contrôleurs ne sont pas destinés à être traités comme des gestionnaires d'exception.
Contrôleurs sont une partie du Ressort de l'API, mais votre design n'est pas en les utilisant comme prévu, c'est pourquoi ça ne fonctionne pas. Repenser votre conception.
OriginalL'auteur duffymo