Hauptverbesserungen bei der Handhabung von PHP 7 Ausnahme
Php 7 hat signifikante Verbesserungen für die Ausnahmebehandlung vorgenommen, wodurch die Grenzfläche Throwable
und Error
Klasse eingeführt wird, die die Funktionen der Fehlerbehandlung erheblich verbessert. Die Throwable
-Schinschnittstelle ist die Basisschnittstelle der Klassen Exception
und Error
, sodass Entwickler alle geworschbaren Fehler fangen können, unabhängig davon, ob Ausnahmen oder Fehler. Die Error
-Klasses behandelt verschiedene interne PHP -Fehler, einschließlich tödlicher und Typfehler, und wird in vier Unterklassen unterteilt: ArithmeticError
, TypeError
, ParseError
, AssertionError
und
Throwable
Schnittstelle
Die Schnittstelle Throwable
Exception
ist die übergeordnete Schnittstelle der Klassen Error
und
<?php try { throw new Exception("这是一个异常"); } catch (Throwable $e) { echo $e->getMessage(); }
ParseError
oder neu
<?php try { $result = eval("2*'7'"); } catch (Throwable $e) { echo $e->getMessage(); }
ParseError
Führen Sie diesen Code aus, um ein eval()
zu erhalten, da das Semikolon in
Throwable
benutzerdefinierte Klassen können nicht direkt Throwable
implementiert werden, sondern müssen die Exception
-Klasse verlängern, die das
Error
Kategorie
Error
ArithmeticError
TypeError
ParseError
AssertionError
assert()
: Behauptungsfehler, geworfen, wenn die Bedingung in der Funktion
Error
Vor dem Upgrade auf Php 7 muss ein benutzerdefinierter
ArithmeticError
intdiv()
Dieser Fehler tritt bei der Ausführung mathematischer Operationen auf. Verwenden Sie beispielsweise
<?php try { var_dump(intdiv(PHP_INT_MIN, -1)); } catch (ArithmeticError $e) { echo $e->getMessage(); }
Erhält den Fehler "" von -1 DivisionByZeroError
". ArithmeticError
ist eine Unterklasse von
TypeError
Dieser Fehler hängt hauptsächlich mit der Skalartyp -Deklaration in Php 7 zusammen. Dieser Fehler wird angezeigt, wenn Sie eine Funktion oder Variable eines bestimmten Datentyps erstellen und versuchen, Werte für verschiedene Datentypen zu speichern.
ParseError
eval()
Dieser Fehler wird bei Verwendung von
AssertionError
Dieser Fehler wird nur geworfen, wenn die Behauptung in der Funktion assert()
fehlschlägt. Die Anweisungen php.ini
und assert.exception
müssen in zend.assertions
konfiguriert werden, um diesen Fehler zu fangen.
Zusammenfassung
Die in PHP 7 eingeführte Schnittstelle und Throwable
-Klasse vereinfachen die Ausnahmeregelung und erleichtern die Handhabung verschiedener Fehlertypen. Achten Sie beim Upgrade auf PHP 7 auf die Benennung von Problemen mit benutzerdefinierten Error
-Klassen und vertrauen Sie mit neuen Fehlern und erweiterten Klassen. Error
FAQs (FAQs)
Was sind die Hauptänderungen bei der Handhabung von PHP 7? php 7 führt die Grenzfläche und Throwable
vor, und alle Fehler können als Ausnahmen behandelt und mit dem Error
-Block erfasst werden. try/catch
Wie funktioniert die Schnittstelle? Throwable
ist die Basisschnittstelle für alle Ausnahmen, die durch Throwable
und Exception
implementiert werden. Error
Was ist die Funktion der Klasse? Error
Klasse wird verwendet, um interne PHP -Fehler zu behandeln. Error
Wie kann ich mit Ausnahmen in Php 7 umgehen? Verwenden Sie den -Block, um die Objekte try/catch
, Throwable
und Exception
zu erfassen. Error
und Exception
? Error
Für traditionelle Ausnahmen Exception
für interne PHP -Fehler. Error
Wie kann man eine Ausnahme in Php 7 auswerfen? Verwenden Sie das Schlüsselwort . throw
Wie erstelle ich eine benutzerdefinierte Ausnahme in Php 7? Erweiterung Klasse. Exception
Was ist die Funktion von Schlüsselwörtern? finally
Der Code im -Block wird unabhängig davon ausgeführt, ob die Ausnahme ausgelöst wird oder nicht. finally
Wie kann man eine Ausnahme in Php 7 wiederwischen? Verwenden Sie das Schlüsselwort im Block catch
. throw
Wie behandle ich mehrere Ausnahmen in Php 7? In der -Anweisung mehrere try/catch
Blöcke einbeziehen. catch
Das obige ist der detaillierte Inhalt vonEin Crash -Kurs von Änderungen zur Ausnahmehandhabung in PHP 7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!