2015-07-20 9 views
7

Ich habe einige Code, der DB-Anrufe und Netzwerkanforderungen macht und ich habe es in einem Versuch/Catch gewickelt. Das Problem ist, dass ich nie die Ausnahmen fangen, und sie scheinen nicht fatal Ausnahmen zu sein:Wie PHP-Ausnahmen richtig zu fangen (Laravel 5.1)

try { 
    // make db requests and network calls 
} catch (Exception $e) { 
    // handle exception 
} 

nämlich I Ausnahmen begegnen wie diese:

[Illuminate\Database\QueryException] 
[PDOException] 
[InvalidArgumentException] 

Gibt es eine Möglichkeit zu Fange diese Ausnahmen? Muss ich für jeden möglichen Typ von Ausnahmeobjekt explizit sein (was bedeutet, dass ich viele try/catchs erstellen muss), oder gibt es eine empfohlene Möglichkeit, nicht schwerwiegende Ausnahmen abzufangen?

+0

Wo haben Sie diese Try/Catch-Klausel? –

+0

Ist das Laravel 4.2 oder 5+? –

+0

5.1. Dumm ich, ich habe vor der Exception-Klasse keinen Backslash benutzt. Lass es mich versuchen ... –

Antwort

16

Stellen Sie sicher, dass Sie Ihre Namespaces ordnungsgemäß verwenden.

Wenn Sie eine Klasse verwenden, ohne ihren Namespace anzugeben, sucht PHP nach der Klasse im aktuellen Namespace. Ausnahme Die Klasse existiert im globalen Namespace. Wenn Sie dies tun, versuchen Sie/fangen Sie in einem Namespace-Code, z. Ihr Controller oder das Modell, was Sie tun müssen:

try { 
    //code causing exception to be thrown 
} catch(\Exception $e) { 
    //exception handling 
} 

Wenn Sie es so tun gibt es keinen Weg, um alle Ausnahmen zu verpassen.

Andernfalls, wenn Sie eine Ausnahme in einem Controller-Code erhalten, die in App \ Http \ Controllers, Ihren Fang für App warten \ Http \ Controllers \ Exception gespeichert Objekt geworfen werden.

+0

Ah. Sieht nach einem unvorsichtigen Fehler meinerseits aus. Ich werde das versuchen und wenn es funktioniert, werde ich diese Antwort wählen. –

+0

Ich habe absichtlich Apps \ MyModel versucht, einen Datensatz zu finden, es wirft Klasse "Apps \ MyModel" Ausnahme nicht gefunden. Ich habe versucht, die beiden FatalErrorException und \ Exception, beide fehlgeschlagen. irgendeine Idee? –