Heim > Backend-Entwicklung > PHP7 > Analysieren Sie gemeinsam Fehler und Ausnahmen in PHP7

Analysieren Sie gemeinsam Fehler und Ausnahmen in PHP7

藏色散人
Freigeben: 2023-02-18 08:38:01
nach vorne
2254 Leute haben es durchsucht

Empfohlen: „PHP7-Tutorial

Einer der Gründe, warum die PHP-Sprache einfach ist, ist der Fehlerbehandlungsmechanismus von PHP, da die PHP-Sprache immer mehr wird Modern, es erscheint auch Ausnahmen, dieser Blog-Beitrag spricht einfach über Fehler und Ausnahmen, um das Systemverständnis zu erleichtern. Darüber hinaus ist die Existenz von Ausnahmen in jeder Sprache üblich, daher ist es wichtig, eine Sprache zu lernen, um den Ausnahmemechanismus zu verstehen

Was ist ein Fehler? Wenn die PHP-Sprache auf eine abnormale Situation stößt (z. B. einen Fehler bei der Datenbankverbindung oder einen Fehler bei der Übertragung von Funktionsparametern), werden einige Fehler zusätzlich zu E_ERROR- und E_CORE_ERROR-Fehlern gemeldet. Andere Fehler führen nicht zum Abbruch des Programms.

Der Grund, warum PHP den Leuten das Gefühl gibt, einfach zu sein, liegt darin, dass das Programm nicht häufig Fehler meldet, was den Leuten die Illusion eines reibungslosen und bequemen Schreibens vermittelt. Aus diesem Grund ist auch die Genauigkeit und Genauigkeit von PHP-Programme sind schlecht. Wenn beispielsweise die mysql_fetch_array-Abfrage auf einen Netzwerkfehler stößt und FALSE zurückgibt (das Programm wird nicht beendet), wenn das aufrufende Programm denkt, dass die Abfrage keine passenden Daten hat, dann ist das Programm im Wesentlichen falsch Der Befehl „error_reporting“ von php.ini oder dynamisch Durch Aufrufen der Funktion „error_reporting()“ können wir auswählen, welche Art von Fehlern gemeldet werden sollen. Mit dem Befehl „display_errors“ können wir steuern, ob Fehler online ausgegeben werden zum Protokoll.

So verwenden Sie Fehler richtig

Wenn ein Fehler intern auftritt, wird dies normalerweise dadurch angezeigt, dass die Funktion TRUE zurückgibt oder FALSE. Diese Verarbeitungsmethode hat mehrere Nachteile:

● Der Aufrufer weiß nur, dass ein Fehler aufgetreten ist, aber die zurückgegebenen Fehlerinformationen sind zu gering und es fehlt eine Beschreibung der Fehlerart.

● Programmverarbeitungslogik und Fehler Die Handhabung ist gemischt und der generierte Code ist sehr unklar. Ein kleiner Trick: Die Funktion error_get_last() gibt die spezifischen Details des letzten Fehlers zurück.
● Der set_error_handler(). Funktion zum Hosten aller Fehler
● Die Funktion trigger_error() kann benutzerdefinierte Fehler auslösen und kann verwendet werden, um die Return-Anweisung in der Funktion zu ersetzen
● Alle Fehler ausgeben an Im Protokoll werden auch Fehlertypen definiert
● Fehler für Benutzer anzeigen, B. die benutzerfreundlichere Rückgabe von Fehlern an Benutzer.

● Der Befehl display_errors sollte in der Produktionsumgebung deaktiviert und in der Entwicklungsumgebung aktiviert werden.

Wird vom alten PHP-Framework Codeigniter verarbeitet. Sie können aus dem falschen Weg lernen

`function _error_handler($severity, $message, $filepath, $line)
{
    $is_error = (((E_ERROR | E_COMPILE_ERROR | E_CORE_ERROR | E_USER_ERROR) & $severity) === $severity);
    //输出500错误HTTP状态码
    if ($is_error) {
        set_status_header(500);
    }
    //对于不需要处理的错误则直接中断
    if (($severity & error_reporting()) !== $severity) {
        return;
    }
    //将所有的错误记录到日志中
    $_error =& load_class('Exceptions', 'core');
    $_error->log_exception($severity, $message, $filepath, $line);
    //友好的输出所有错误
    if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))){
        $_error->show_php_error($severity, $message, $filepath, $line);
    }
    //假如致命错误则直接退出
    if ($is_error) {
        exit(1);   
    }
}
set_error_handler('_error_handler');`
Nach dem Login kopieren

Was ist eine Ausnahme?

Eine Ausnahme ist auch ein Fehler und weist die folgenden Merkmale auf:
● Ausnahmen können angepasst werden. SPL bietet viele Arten von Ausnahmen. Sie können sie auch erweitern.
● Ausnahmen sind die häufigsten Die Aktion besteht darin, sie zu erfassen , damit Entwickler eine nachfolgende Verarbeitung basierend auf bestimmten Fehlern durchführen können. Sie können beispielsweise basierend auf dem Kontext der Ausnahme benutzerfreundliche Eingabeaufforderungen zurückgeben oder weiterhin eine Ausnahme auslösen und diese vom Upstream-Programm behandeln lassen Immer noch nicht abgefangen, dann wird das Programm direkt beendet.
● Eine weitere Aktion für Ausnahmen ist das Auslösen. Wenn Sie Geschäftslogik über Funktionen schreiben und auf unerwartete Situationen stoßen, können Sie direkt eine Ausnahme auslösen.

● Ausnahmen können Schicht für Schicht erfasst werden Der Code. Wenn das äußerste Programm nicht abgefangen wurde, wird die Ausführung des Codes direkt beendet

● Wenn die Ausnahme in PHP nicht abgefangen werden kann, wird sie als schwerwiegender Fehler in das Systemfehlerprotokoll geschriebenErklärung durch intuitiven Code:

`function inverse($x)
{
    if ($x < 10) {
        throw new Exception(&#39;x<10&#39;);
    } elseif ($x >= 10 and $x < 100) {
        throw new LogicException(&#39;x>=10 and x<100&#39;);
    }
    return $x;
}
try {
    echo inverse(2)."\n";
} catch (LogicException $e) {
    echo &#39;Caught LogicException: &#39;, $e->getMessage(), "\n";
} catch (Exception $e) {
    echo 'Caught Exception: ', $e->getMessage(), "\n";
    throw $e;
}`
Nach dem Login kopieren


Best Practices für Ausnahmen

● Ausnahmen können den Code klarer machen, sodass sich Entwickler auf das Schreiben von Geschäftslogik konzentrieren können.
● Das Erstellen erweiterbarer Ausnahmen ist nicht sehr technisch.
● Ausnahmen abfangen

Ausnahmen in PHP7PHP7 fördert die Verwendung von Ausnahmen, um Fehler zu ersetzen, aber es ist unmöglich, den Fehlerbehandlungsmechanismus auf einmal aufzuheben . Sie müssen kompatibel sein, damit wir nur langsam umsteigen können.
Aber Ausnahmen können durch Problemumgehungen einheitlich verwendet werden
● Fehlerausnahme
Eine Fehlerausnahme ist in PHP definiert. Beachten Sie, dass diese Ausnahme parallel zu Exception ist.

Wenn der strikte Modus aktiviert ist on, Viele Fehler in PHP7 werden durch Fehlerausnahmen ausgelöst.

`declare (strict_types = 1);
function add(int $a, int $b)
{
    return $a + $b;
}
try {
    echo add("3", "4");
}
catch (TypeError $e) { //TypeError继承自Error
    echo $e->getMessage();
}`
Nach dem Login kopieren
● ErrorExceptionErrorException erbt von Exception.
Auf diese Weise können wir alle Fehler in ErrorException umwandeln Ich kann gerne einheitlich Ausnahmen verwenden.
Das Obige ist der detaillierte Inhalt zum systematischen Verständnis von Fehlern und Ausnahmen in PHP.
Lesen Sie den Originaltext: Fehler und Ausnahmen in PHP systematisch verstehen

Das obige ist der detaillierte Inhalt vonAnalysieren Sie gemeinsam Fehler und Ausnahmen in PHP7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage