2017-02-15 4 views
2

Ich habe das offizielle Dokument von PlayFramework über Fehlerbehandlung gelesen. Und ich habe gelernt, dass es gut ist, HttpErrorHandler Klasse zu verwenden. Und sie sagen, solche Fehlerbehandlungsklassen können Fehler oder Ausnahmen von Action abfangen. Und ich sah Methoden der DefaultHttpErrorHandler Klasse. Wie unterscheidet die DefaultHttpErrorHandler Klasse jedoch Fehler oder Ausnahmen, die von Action ausgelöst werden? Einige Verfahren wie onServerError nimmt int Argument als Parameter, so dass in diesem Fall, wie funktioniert Action throw Fehler oder Ausnahmen? Zeigt andere Seite es?Wie man Fehler oder Ausnahmen von Action in Play wirft?

+0

Welches Spiel! Version redest du? –

+0

Normalerweise die neueste Version. Diese Frage kommt mit dem vorliegenden offiziellen Dokument. –

Antwort

0

Grundsätzlich eine Ausnahme in einem Controller geworfen wird einen 500 HTTP-Fehlercode Ergebnis. Die Methode fängt diese Ausnahme ab und behandelt sie.

Auf der anderen Seite, 400, 401, 403 oder 404 HTTP-Fehlercodes ist "Client-Fehler" im Play environnement genannt. Diese Fehler werden von der Methode onClientError erfasst und behandelt.

Wenn Sie also eine eigene und individuelle Seite für 404 http Fehlerseite („Seite nicht gefunden“) haben wollen, bauen die gegebene Ansicht und rufen Sie es im Inneren des onClientError Methode (Sie haben die statusCode Parameter auf verschiedene 404 aus 400, 401 oder anderer http Statuscode).

Wenn Sie eine benutzerdefinierte Fehlerseite haben wollen, müssen Sie in onServerError Methode, um die spezielle Ansicht aufrufen.

+0

Über serverseitige Fehler kann ich nachvollziehen. In Bezug auf "Client-Fehler" bin ich mir jedoch noch nicht sicher. Hat ein Benutzer beispielsweise Zugriff auf eine Seite, die nicht existiert, müssen wir normalerweise mit dem Statuscode 404 antworten. Wenn der Client Zugriff auf eine Seite hat, die nicht zulässig ist, müssen wir gleichzeitig den 403-Statuscode beantworten. Unterscheidet Play diese unterschiedliche Situation automatisch ohne irgendeine Einstellung? –

+0

Beachten Sie, dass es einen Unterschied zwischen Ihnen eine 404-Ergebnis in einer Aktion zurückkehren (dh. Es war ein Weg, um den Benutzer zu dieser Aktion führen) und dem Benutzer etwas zugreifen, für die es keine Route gibt. Nur im letzteren Fall wird der Fehlerhandler verwendet. Was 403 betrifft, wie würde man wissen, ob der Benutzer Zugang zu einer bestimmten Ressource hat? Dieser Fall hängt davon ab, wie Sie die Autorisierung durchführen. – rethab

+0

Vielen Dank für Ihre Antwort. Aber ich meine, wenn wir einige Kundenfehler haben, die wir deutlich unterscheiden wollen, wie sollen wir das umsetzen? In Play habe ich gelernt, dass wir Fehler umgehen können, indem wir die HttpErrorHandler-Klasse verwenden. In einigen Fällen möchten wir jedoch unterschiedliche Fehlerbehandlungen für verschiedene Fehler vorbereiten. –

Verwandte Themen