Ein Problem,
Bei der tatsächlichen Verwendung zuul fand ein Problem beim Routing-Adresse kann zuul throw Filter warf Ausnahme, den tatsächlichen Fehler Abschirmung nicht erreichen.
Durch das Lesen wird der Quellcode verfügbar, Zuul ZuulException Ausnahme ausgelöst werden, wird innerhalb von Runtimeexception verkapselt werden.
Throwable verwenden müssen Abfangjäger-Capture.
Frage zwei,
Der obige Code abgeleitet von com.netflix.zuul.http.ZuulServlet
der service
Art der Umsetzung , die definiert , wenn die Verarbeitung Zuul externen Anforderungsprozess, die Ausführungslogik jeder Art von Filter. Wir können aus den drei Code siehe try-catch
Blöcke, die wiederum vertreten die pre
, route
, post
drei Stufen von Filter fordert in der catch
Ausnahmeverarbeitung, können wir sehen , dass sie alle sind error
Typen von Filterverfahren (vor der Verwendung error
Filter definierte einheitliche Ausnahme auch die Vorteile dieser Funktion nahm Handhabung); error
nach der Art des Filters verarbeitet, zusätzlich von der post
Außenseite der abnormal Phase wird dann werden post
Filter behandelt. Für den post
Fall geworfen Ausnahmefilter in durch die error
nach der Filterverarbeitung, keine andere Art von Filter , das Vorhandensein der Grundursachen von Mängeln in dem Programm zu übernehmen , vor der Verwendung ist.
Daran erinnert , dass zwei Arten von Ausnahmebehandlung Methoden vor der Implementierung, bei der der Kern davon, wobei diese beiden Behandlungsmethoden im Zusammenhang mit der Ausnahmebehandlung Anforderungszeit eine Reihe von hinzuzufügen error.*
Parametern und diese Parameter , wo die eigentliche Arbeit in der ist post
Stufe SendErrorFilter
im Filter werden Parameter verwendet , um den Inhalt an den Client zu organisieren. Wie für den post
Fall der Phase eine Ausnahme durch das Werfen error
nicht Aufruf nach der Verarbeitung post
Filteranforderungsphase, natürlich, diese error.*
werden Parameter nicht SendErrorFilter
der Verbraucher ausgegeben. Also, wenn wir einen eigenen haben post
Filter , wenn sie nicht richtig die Ausnahme behandelt, ist es wahrscheinlich immer noch im Protokoll erscheinen und keine abnormale Antwort auf eine Anfrage ist leer Frage. Wir können ändern , bevor ThrowExceptionFilter
die filterType
Änderung ist post
die Existenz dieses Problems, achten , um zu überprüfen , die entfernen try-catch
Verarbeitungsblock, kann es eine Ausnahme werfen.
Um die obigen Probleme dort zu lösen sind viele, wie die unmittelbarste wir erreichen können , error
wenn die Filterergebnisse zurückgegeben werden direkt an die Organisation in der Lage , den Effekt zu erzielen, aber solche Mängel liegen auf der Hand, für Informationsorganisation und Fehlercodes zurückgegeben es erreichen dort mehrere Kopien sein wird, ist dies sehr schwierig für unsere zukünftigen Code Wartungsarbeiten. Deshalb, um konsistente Ausnahme Rückkehr Verarbeitungslogik zu erhalten, haben wir noch wird Hoffnung post
eine Ausnahme Filter geworfen in der Lage sein SendErrorFilter
zu handhaben .
Im vorhergehenden haben wir einen erreicht ErrorFilter
gefangen pre
, route
, post
Filter geworfen Ausnahme und error.*
Gewebeparameter im Rahmen des Antrags. Da unser Ziel zu verfolgen ist SendErrorFilter
, diese error.*
Parameter sind für uns nach wie vor sinnvoll, so können wir den Filter machen es weiterhin verwendet werden , um post
Zeit zu werfen einen Ausnahmefilter, weiterhin organisieren error.*
Parameter, aber hier können wir nicht , diese haben error.*
Parameter , bevor sie weitergeleitet werden SendErrorFitler
Filter es ist zu behandeln. Also müssen wir ErrorFilter
die Filter nach einem Neudefinition error
Filtertyp, lassen Sie es zu der Erkenntnis gelangt , SendErrorFilter
die Funktion, aber die error
Filter muss nicht mit all ungewöhnlichen Umständen beschäftigen, ist es nur post
eine Ausnahme wirksame Filter ausgelöst wurde. Nach den oben genannten Ideen können wir eine Klasse, die erbt von erstellen SendErrorFilter
die Filter, es wiederverwenden kann run
Verfahren, und schreibt sie dann auf die Art, Reihenfolge und Ausführungsbedingungen, Multiplexen der ursprünglichen Logik zu erreichen, und zwar wie folgt umgesetzt:
https://www.cnblogs.com/duanxz/p/7543040.html