So behandeln Sie nicht überprüfte Ausnahmen, die in Netty Handler Stack geworfen werden
-
27-10-2019 - |
Frage
Da jede Ausnahme in Netty Handler Stack ein Upstream-Ereignis erzeugt und schließlich auf Ausnahme in Handler aufgerufen wird, werden die Ausnahmen nicht den ungewöhnlichen Ausnahme-Handler erreichen. Selbst wenn man diese Ausnahme in der ausnahmebeständigen Methode überarbeitet, hilft es nicht (weil Netty sie wieder behandelt). Ich möchte (einige oder alle) nicht überprüfte Ausnahmen aus der Ausnahmemethode werfen. Gibt es eine Möglichkeit, dies zu tun?
Lösung
Nein, es gibt keine Möglichkeit, dies zu tun. Das einzige, worüber Sie tun können, ist, die Ausnahme in Ausnahmeberechnung zu bewältigen. Warum ist das ein Problem für Sie?
Andere Tipps
Ich muss Norman zustimmen, ich hatte ein ähnliches Problem. Ich habe eine ausnahmebehörige Methode erstellt und als meine Ausnahmebehandlung als Routine bezeichnet. Das Problem, auf das ich stieß, war, dass meine Ausnahmebehandlung, die versucht hatte, aufzuräumen und andere Netty -Methoden anzurufen, aber das führte dazu, dass Netty aufgehängt wurde.
Mein Fix war es, einen neuen Thread von Inside ExceptionCaught () zu erstellen, der meine Ausnahmebehandlungsroutine und eine einfache Rückkehr von ExceptionCaught () aufruft. Dies ermöglicht Nettys Ausnahmeregelung, um den normalen Netty -Betrieb zu beenden und wieder aufzunehmen. Sie müssen eine 1 -Sekunden -Verzögerung in Ihren neuen Thread einfügen, bevor Sie auch andere Netty -Funktionen aufrufen. Dies wird sicherstellen, dass Nettys Ausnahmebehandlung durchgeführt wird, bevor mein neuer Thread seine Aufräumarbeiten beginnt und andere Netty -Funktionen aufruft. Es scheint ein bisschen übermäßige Arbeit zu sein, aber es funktioniert und vermeidet Rennbedingungen.