Als PHP-Entwickler können Sie Ausnahmen verwenden, da Sie feststellen können, wenn etwas schiefgelaufen ist oder der Benutzer auf ungewöhnliche Weise gehandelt hat (z. B. Division durch Null). Ausnahmslos würde Ihre Anwendung unerwünschte Fehler anzeigen und das Debuggen erheblich erschweren. Es ist auch wichtig, dass Sie die Ausführung sofort stoppen und eine andere Vorgehensweise einleiten.
Ausnahmen sind wirklich einfach und erleichtern Ihnen den Entwicklungsfortschritt. Wenn Sie lernen, Ausnahmen zu verwenden, ist dies ein üblicher Bestandteil Ihrer Entwicklung.
Ich denke, die beste Definition für Ausnahmen ist Martin Fowler:
Ausnahmen signalisieren etwas außerhalb der erwarteten Verhaltensgrenzen des betreffenden Codes.
Tatsächlich ist eine Ausnahme tatsächlich ein Ereignis, das während der Ausführung eines Programms auftritt und den normalen Fluss der Programmanweisungen stört. Wenn du werfen
(Erstellen Sie ein Ausnahmeobjekt und übergeben Sie es an das Laufzeitsystem.) Eine Ausnahme wird das System Fang
Suchen Sie nach dem entsprechenden Handler und geben Sie die richtige Nachricht zurück.
try // der Code geht hier hin catch (Exception $ e) // wenn eine Ausnahme im try-Block oben aufgetreten ist
Verwenden Sie Ausnahmen, wenn Ihr System außergewöhnlichen Umständen ausgesetzt ist, die die Übernahme des Systems verhindern. Ausnahmen verwenden wir nur, wenn das System nicht feststellen kann, was passiert ist. Martin Fowler ist der Meinung, dass "wenn ein Fehler ein erwartetes Verhalten ist, keine Ausnahmen verwendet werden sollten". Das heißt, Sie sollten Ausnahmen verwenden, bei denen Sie den Fehler nicht ermitteln können. Ausnahmen sollten nur in Ausnahmefällen verwendet werden.
Hinweis: Ausnahmen eignen sich nicht für die Verarbeitung von Logikoperationen.
Für ein System wie die Überprüfung von Eingaben ist die Verwendung von Ausnahmen falsch. Zunächst wird der Eingabetext bestimmt, und in einer solchen Anwendung sollten wir eine Fehlersammlung anstelle eines einzelnen Fehlers melden. Ich glaube daran, die Verwendung von Ausnahmen unter allen Umständen zu beseitigen, unter denen Validierungsfehler zu erwarten sind.
Das Abfangen einer Ausnahme ist sehr wichtig, da das System einen Fehler zurückgibt, wenn Sie keine Ausnahme abfangen. Der Fangvorgang muss so nah wie möglich an der Ausfallstelle sein.
Laravel verwendet Ausnahme-Handler, was ist eine Klasse in App \ Exceptions \ Handler.php
. Diese Klasse enthält zwei Hauptmethoden (die renderHttpException
Diese Methode wird für alle HTTP-Ausnahmen wie 404s und 503s in der übergeordneten Klasse von Handler verwendet. Der erste ist Bericht
, Mit dieser Option werden Ausnahmen protokolliert oder an einen externen Dienst gesendet. Hier ist ein Beispiel für die Berichtsmethode:
Öffentlicher Funktionsbericht (Ausnahme $ e) if ($ e Instanz von CustomException) // return parent :: report ($ e);
Der zweite ist machen
. Die Render-Methode ist dafür verantwortlich, eine bestimmte Ausnahme in eine HTTP-Antwort zu konvertieren, die an den Browser zurückgesendet werden soll. Hier ist ein Beispiel für die Render-Methode:
public function render ($ request, Ausnahme $ e) if ($ e Instanz von CustomException) return response () -> view ('errors.custom', [], 500); return parent :: render ($ request, $ e);
Hinweis: Sie können das verwenden $ dontReport
Eigenschaft des Ausnahmebehandlers, um Ausnahmen nach Typ zu ignorieren.
Sie können Laravel-Ausnahmemethoden in Ihrer eigenen Ausnahme wie folgt überschreiben:
public function render ($ request, Ausnahme $ e) if (config ('app.debug')) return parent :: render ($ request, $ e); $ this-> handle ($ request, $ e) zurückgeben;
Dies wird gerendert, wenn config debug true ist.
Möglicherweise müssen Sie eine eigene Ausnahmeklasse erstellen. Sie müssen die Laravel-Basis-Exception-Klasse erweitern. Ich habe eine abstrakte Klasse erstellt, die sich als Basisklasse unserer benutzerdefinierten Exception-Klasse verhält. Erstellen Sie eine Datei in App / Ausnahmen / monException.php
:
Namespace App \ Exceptions; Ausnahme verwenden; Abstrakte Klasse monException erweitert Exception protected $ id; geschützte $ Details; öffentliche Funktion __construct ($ message) parent :: __ construct ($ message); geschützte Funktion create (array $ args) $ this-> id = array_shift ($ args); $ error = $ this-> errors ($ this-> id); $ this-> details = vsprintf ($ error ['context'], $ args); $ this-> details zurückgeben; private Funktionsfehler ($ id) $ data = ['not_found' => ['context' => 'Die angeforderte Ressource wurde nicht gefunden, ist jedoch möglicherweise in Zukunft wieder verfügbar. Spätere Anfragen des Kunden sind zulässig. ',] //…]; Rückgabe von $ data [$ id];
Und deine Ausnahmeklasse:
Namespace App \ Exceptions; class NotFoundmonException erweitert monException public function __construct () $ message = $ this-> create (func_get_args ()); parent :: __ construct ($ message);
Sie können die oben genannte Klasse in Ihrem Code verwenden:
try throw new \ App \ Exceptions \ NotFoundmonException ('not_found'); catch (\ App \ Exceptions \ NotFoundmonException $ e) return $ e-> getMessage ();
Neben der Klasse Laravel Core Exception können Sie das Assertion-Paket verwenden. Dies kann als Ausnahmeklasse eines Drittanbieters verwendet werden. Sie können dies verwenden, um Spaghetti zu überspringen ob
Blöcke in Ihrem Code.
Um das Assertion-Paket zu installieren, müssen Sie den folgenden Befehl ausführen:
Komponist erfordert beberlei / assert
Wenn Sie beispielsweise die E-Mail-Adresse eines Benutzers überprüfen möchten, können Sie Folgendes tun:
Verwenden Sie Assert \ Assertion; Verwenden Sie Assert \ AssertionFailedException; //… try Assertion :: email ($ value, "Der Wert muss eine gültige E-Mail-Adresse sein"); catch (AssertionFailedException $ e) $ e-> getValue (); // der Wert, der den Fehler verursacht hat $ e-> getConstraints (); // die zusätzlichen Einschränkungen der Assertion.
Unabhängig von der Sprache, die Sie verwenden, sind Ausnahmen sehr wichtig zu verstehen, da sie uns helfen, die Ausführung des Anwendungsflusses zu steuern.
Darüber hinaus helfen sie uns, auftretende Probleme zu protokollieren und unsere Anwendung robuster zu machen.
Wie Sie anhand der in diesem Lernprogramm behandelten Arbeit sehen können, ist Laravel ein Framework, das großartige Funktionen zur Ausnahmebehandlung von Webanwendungen bietet.