Netty exception-handling - Handler Ausnahme wirft, was dann?
Ich habe die Suche rund um für eine Ausnahmebehandlung Muster für Netty, aber ich bin nicht in der Lage viel zu finden.
Irgendeine Art von exception-handling-Anleitung wäre toll. Ich habe exceptions geworfen, die an exceptionCaught aber ich weiß nicht, was als Nächstes zu tun ist.
Kann jemand geben eine Allgemeine Erklärung, wie die Behandlung von Ausnahmen in Netty. Was ist das erwartete Muster für die Behandlung einer Ausnahme geworfen von einem ChannelHandler?
Dank,
Matt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Norman und Veebs haben beide erwähnt, ohne das Verständnis Ihrer genauen Anforderungen es ist ein wenig schwierig zu geben, eine präzise Antwort, aber....
Ich denke, die folgenden bietet eine generische Möglichkeit zum verarbeiten von server-Fehler auf, die man nicht erwartet. Es gibt ein HTTP 500 "Internal Server Error" an den client und schließt dann den Kanal. Offensichtlich bin ich der Annahme auszugehen, dass sich Ihre Kunden anfordern und empfangen über HTTP, die Sie möglicherweise nicht, in dem Fall Veebs Lösung ist besser.
Hinweis: wenn Sie diese Lösung verwenden, dann müssen Sie eine HttpResponseDecoder, um Ihre pipeline auch.
Offensichtlich, wenn Sie haben spezifische Ausnahmen, die Sie möchten, zu fangen und zu behandeln, dann würden Sie schreiben einige zusätzliche Logik hier zu tun.
HTH!
Es hängt wirklich davon ab, Ihre Umsetzung und welche Art von Ausnahme. Manchmal können Sie in der Lage sein sich zu erholen, zu anderen Zeiten ist es das beste, einfach schließen Sie den Kanal.
So, ich denke, es ist unmöglich zu sagen, wie Sie es handhaben..
Stimme mit Norman.
Im Allgemeinen, versuche ich zu fangen und zu behandeln, alle Anwendungs-exception und Rückkehr ordnungsgemäße Nachrichten mit dem Fehler.
Zum Beispiel in einem HTTP-server, würde ich Sie wieder ein 404, wenn eine Datei nicht gefunden wurde.
Ich auch fügen Sie die folgende Funktion in mein handler für Ausnahmen, die ich nicht fangen - die in der Theorie sollte nur Netzwerk Fehler. Ich Neige dazu, nehmen Sie einen schwarzen und weißen Ansatz zu diesen Ausnahmen und davon ausgehen, dass ich nicht wiederherstellen kann. Also, ich schließen Sie den Kanal. Es wird an den client, um erneut zu versuchen.
Hoffe, das hilft.