So umgehen Laravel Ausnahmebehandlung
Habe ich eine Methode, die prüft, ob der Benutzer gültige Sitzungs-info. Diese soll eine Exception werfen, Guzzle\Http\Exception\BadResponseException
aber wenn ich versuche, es zu fangen :
catch (Guzzle\Http\Exception\BadResponseException $e)
{
return false;
}
return true
Laravel nicht zu diesem code und startet sofort seine eigene Fehlerbehandlung. Und Ideen, wie Sie zu umgehen Laravels eigene Implementierung und meine eigenen zu Fangen.
EDIT: ich habe gerade herausgefunden, Laravel nutzt die gleiche Exception-handler wie Symfony, also ich habe auch das Symfony2-tag.
EDIT 2:
Ich habe irgendwie das Problem durch deaktivieren Saufen, Ausnahmen und überprüfung der Rendite-header manuell. Es ist ein bisschen kurz geschnitten, aber in diesem Fall, es macht den job. Vielen Dank für die Antworten!
- Kannst du mehr relevanten code (einschließlich
try
block)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentlich diese exception kann abgefangen werden, in Laravel, Sie müssen nur zu respektieren (und zu verstehen) Namensräume:
Wenn Sie
und Sie tun
PHP versteht, dass Sie versuchen, zu
So, für es zu arbeiten, Sie brauchen nur ein root-slash:
Und es wird funktionieren.
Standardmäßig die
app/start/global.php
- Datei enthält einen Fehler-handler für alle Ausnahmen. Sie können jedoch angeben, mehr-Handler, wenn nötig. Handler werden aufgerufen, auf der Grundlage dertype-hint
von der Ausnahme, die Sie handhaben. Zum Beispiel, können Sie einen handler erstellen, die nur mit IhrenBadResponseException
Instanzen, wieStellen Sie außerdem sicher, Sie haben eine gut definierte (
BadResponseException
) Klasse. Lesen Sie mehr über Laravel Dokumentation.Response
Objekt. Laravel nutzt die Chain of Responsibility - Muster bei der Behandlung von Fehlern. Dadurch können Sie den Fehler behandeln irgendeiner Weise Sie sich entscheiden. Sie können etwas tun, wie die Anmeldung die Saufen Fehler, und dann lassen Sie Laravel anderen Fehler Handler entscheiden, wie zu reagieren ist. Siehe diesem blog-post für etwas mehr Erklärung.OP
ist mittry catch
in der Klasse selbst.Anstatt Ihren code
verwenden Sie diese Lösung
fangen alle möglichen Ausnahmen, die ausgelöst durch Saufen.
Wenn Sie explizit möchten, fangen BadResponseException können Sie auch stellen Sie Ihre Ausnahme-Klasse namespace mit '\'.