Un problème,
Dans Zuul réelle utilisation trouvé un problème lorsque l'adresse de routage ne peut pas atteindre, Zuul lancer filtre Exception jeté, l'erreur de protection réelle.
En lisant le code source disponible, exception Zuul ZuulException sera jeté, sera encapsulé dans RuntimeException.
Throwable besoin d'utiliser la capture des intercepteurs.
Question deux,
Le code ci - dessus dérivée de com.netflix.zuul.http.ZuulServlet
la service
méthode de mise en oeuvre qui définit le traitement lorsque le processus de demande externe Zuul, la logique d'exécution de chaque type de filtre. Nous pouvons voir dans les trois codes try-catch
blocs, qui représentent à leur tour pre
, route
, post
trois étapes d'appels de filtre, dans le catch
traitement des exceptions, nous pouvons voir qu'ils sont tous les error
types de processus de filtrage (avant l'utilisation des error
filtres définie exception uniforme manipulation a profité de cette fonction); error
après le type de filtre traité, en plus de l' post
extérieur de la phase anormale, sera ensuite post
filtre traité. Pour le post
cas jeté filtre d'exception dans à travers le error
traitement après filtre, aucun autre type de filtre pour prendre en charge la présence des causes profondes des lacunes du programme avant de l' utiliser est.
Rappelons que deux types de méthodes de manipulation d'exception avant la mise en œuvre, dans laquelle le cœur même de celui - ci, ces deux méthodes de traitement dans le contexte du temps de demande de traitement exception à ajouter une série de error.*
paramètres, et ces paramètres où le travail réel est en post
phase de SendErrorFilter
dans les paramètres du filtre seront utilisés pour organiser le retour du contenu au client. En ce qui concerne le post
cas de la phase lancer une exception par error
ne pas appeler après filtre de traitement post
phase de demande, bien sûr, ces error.*
paramètres ne seront pas SendErrorFilter
la sortie du consommateur. Donc, si nous avons une coutume post
filtre lorsque gère pas correctement l'exception, il est susceptible d'apparaître dans le journal et aucune réponse anormale à une demande est question vide. Nous pouvons modifier avant ThrowExceptionFilter
la filterType
modification est post
de vérifier l'existence de ce problème, attention à retirer le try-catch
bloc de traitement, il peut lancer une exception.
Pour résoudre les problèmes ci - dessus il y a beaucoup, comme le plus direct que nous pouvons réaliser error
lorsque les résultats du filtre sont directement retournés à l'organisation sera en mesure d'obtenir l'effet, mais ces lacunes sont évidentes, pour l' organisation de l' information et les codes d' erreur renvoyés y parvenir il y aura plusieurs copies, ce qui est très difficile pour notre futur travail de maintenance du code. Par conséquent, afin de maintenir une logique de traitement cohérente de retour d'exception, nous avons encore l' espoir sera post
une exception pour pouvoir filtrer jeté SendErrorFilter
à la poignée.
Dans ce qui précède, nous avons réalisé un ErrorFilter
capturé pre
, route
, post
exception jeté filtre et tissus error.*
paramètres dans le contexte de la demande. Étant donné que notre objectif est de suivre SendErrorFilter
, ces error.*
paramètres sont toujours utiles pour nous, afin que nous puissions continuer à utiliser le filtre pour le faire dans le post
temps de jeter un filtre d'exception, continuer à organiser des error.*
paramètres, mais ici nous ne pouvons pas avoir ces error.*
paramètres avant d' être transmis au SendErrorFitler
filtre il est à traiter. Nous devons donc ErrorFilter
redéfinir le filtre après un error
type de filtre, qu'il vienne à réaliser SendErrorFilter
la fonction, mais le error
filtre n'a pas besoin de faire face à toutes les circonstances inhabituelles, il est seulement post
une exception a été levée filtre efficace. Selon les idées ci - dessus, nous pouvons créer une classe héritant de SendErrorFilter
filtre, il peut réutiliser la run
méthode, puis réécrire le type, l' ordre et les conditions d'exécution, pour réaliser un multiplexage de la logique originale, spécifiquement mis en œuvre comme suit:
https://www.cnblogs.com/duanxz/p/7543040.html