12
votes

@ControllerAdvice La méthode du gestionnaire d'exception ne sont pas appelées

J'ai suivi de la classe de contrôleur xxx

}

et pour la manipulation d'exception, j'utilise le gestionnaire de conseil Spring3.2 comme suit xxx < / PRE>

}

J'ai défini Définition de haricot XML définie comme xxx

exception projetée de contrôleur n'est pas géré par le gestionnaire de conseils du contrôleur. J'ai googlé pendant des heures mais je n'ai trouvé aucune référence pourquoi elle se produit. J'ai suivi comme décrit HTTP : //www.baeldung.com/2013/01/31/Exception-Handling-for-Rest-with-spring-3-2/ ici.

Si quelqu'un sait s'il vous plaît sais pourquoi le gestionnaire ne manipule pas une exception.


0 commentaires

5 Réponses :


-1
votes

Je pense que le problème est probablement que votre méthode de contrôleur lance exception code> mais votre @Controlleradvice code> méthodes capit des exceptions spécifiques. Soit les combiner dans un gestionnaire qui attrape exception code> ou faites jetez votre contrôleur ces exceptions spécifiques.

Donc, votre méthode de contrôleur doit être la suivante: P>

@ExceptionHandler({
    Exception.class
})


0 commentaires

11
votes

J'ai trouvé la solution pour le problème ci-dessus. En fait, @ControllerAdvice a besoin de déclaration d'espace de noms MVC dans le fichier XML. Ou nous pouvons utiliser @enablewebmvc avec annotation @ControllerAdvice.


11 commentaires

Pour plus de clarté Cette réponse, la sous-classe de la réponse de réponseExceptionHandler doit être incluse dans le chemin de @Componentscan afin que le conteneur à ressort le détecte. Je ne pense pas que la documentation soit très claire à ce sujet. J'espère que cela sauver des gens un peu de temps.


Pouvez-vous s'il vous plaît clarifier ce que vous entendez par «DÉCLARATION DES PAIES DE NOMS MVC»?


@Ericb. Par la déclaration d'espace de noms MVC Je veux dire, nous devrions avoir dans notre fichier XML de configuration (par exemple, ApplicationConfig.xml). Si nous n'utilisons pas dans XML, nous devons utiliser ActiverWebMVC avec Annotation ControllerAdvice.


@Vishalsingh Je suis confronté à un même problème dans l'application MU \ y. @ ControllerAdvice La méthode de gestionnaire d'exception ne sont pas appelées.Je ont essayé avec la solution donnée, mais le problème est toujours là-bas. Pour vous aider à vous en sortir


@RACHANA, veuillez vérifier si votre responsable de contrôleur est dans votre chemin de numérisation. Et vérifiez également votre version de printemps. @ Contrôleur annotation est disponible pour Spring3.2 ou plus.


@Vishalsingh J'ai choisi tout ce que vous venez de mentionner mais toujours au même endroit.


@RACHANA, pouvez-vous s'il vous plaît partager le code de code associé à vos conseils de contrôleur


@Vishalsingh voir Cette question que j'ai posté


@Vishalsingh upvote pour la question de même que je suis confronté au même problème et bloqué avec elle


Cette explication est incorrecte @ AcableWebMVC n'a aucune influence sur @ControllerAdvice.


Dans mon gestionnaire de cas annoté par @ControllerAdvice n'atteint pas l'exception d'en-tête HTTP absente.



0
votes
<bean class="com.java.rest.controllers.VMSCenteralExceptionHandler " />

0 commentaires

0
votes

Vous avez juste besoin d'effectuer ces 2 étapes:

  1. Ajouter @Controlleradvice au-dessus de la classe Global Exception Handler.
  2. Ajoutez votre package Nom de la classe d'exception en composant-scan I.e.


0 commentaires

4
votes

J'ai eu un problème similaire.

a réussi à le réparer en septembre 2017.

Mon cas était que le gestionnaire d'exception était dans son propre package COM.Example.Exceptions et le problème était qu'il était Non numérisé par des composants de ressort.

solution consiste à l'ajouter dans les composantsCan, comme: xxx


1 commentaires

Et si c'est une application de démarrage à ressort, vous pouvez utiliser @springbooTaplication (scanbasepackages = {"x.y.z.services", "x.y.z.controls", "x.y.z.exceptions"})