Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn in PHP eine globale Ausnahme/ein globaler Fehler auftritt?

Was tun, wenn in PHP eine globale Ausnahme/ein globaler Fehler auftritt?

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-07-26 09:28:302214Durchsuche

In der Entwicklung müssen wir häufig Funktionen zur Fehler- und Ausnahmebehandlung anpassen, um in verschiedenen Szenarien benutzerfreundlichere Verarbeitungstipps bereitzustellen. Heute stellen wir vor, wie man set_Exception_handler/set_error_handler zum Beheben von Ausnahmen/Fehlern verwendet. Sie können bei Bedarf darauf zurückgreifen.

Was tun, wenn in PHP eine globale Ausnahme/ein globaler Fehler auftritt?

Ausnahme

Wenn wir eine Ausnahme ohne Try-Catch auslösen, generiert das System einen schwerwiegenden Fehler und gibt die relevanten Informationen aus, bevor die Ausführung beendet wird.

throw new Exception("Error Processing Request", 1);

Fatal error: Uncaught exception 'Exception' with message 'Error Processing Request'

set_Exception_handler kann eine globale Ausnahmebehandlungsfunktion festlegen. Wenn die Ausnahme nicht von Try Catch behandelt wird, übergibt das System die Ausnahme zur Verarbeitung an diese Funktion.

<?php
/**
 * 全局异常处理函数,会捕捉没有被 try catch 处理的异常
 * @param  [type] $exception [description]
 * @return [type]            [description]
 */
function func_exception_handler($exception)
{
    echo "User Exception:" .
        " [" . $exception->getCode() . "]" .
        " message " . $exception->getMessage() .
        " in file " . $exception->getFile() .
        " on line " . $exception->getLine() . PHP_EOL;
}

//如果不设定全局的异常处理函数 且 抛出异常时不使用 try catch 处理则会 fatal error
set_exception_handler("func_exception_handler");

try {
    throw new Exception("我会被 try catch 捕捉处理,不影响执行流程!");
} catch (Exception $e) {
    echo $e->getMessage() . PHP_EOL;
}

throw new Exception("我没有被 try catch 捕捉处理,会被全局 set_exception_handler 处理!");

echo "没有被 try catch 处理的异常在我之前抛出,虽然被 set_exception_handler 但仍然会立刻退出执行,执行不到我哟" . PHP_EOL;

Hinweis: Da die Ausnahme jedoch immer noch nicht von Try behandelt wird Fang, die Verarbeitung ist abgeschlossen. Danach beendet das Programm die Ausführung immer noch und nachfolgender Code wird nicht ausgeführt.

Fehler

Die Fehler, auf die wir in PHP häufig stoßen, sind: ERROR/WARNING/NOTICE

Wir können die Funktion trigger_error verwenden, um Fehler auszulösen, und set_error_handler verwenden, um unsere eigene Fehlerbehandlungsfunktion zu definieren.

trigger_error löst standardmäßig Fehler auf Benutzerebene aus, die sich nicht auf den Ausführungsprozess auswirken. Wir können die Fehlerebene selbst definieren, wenn sie ausgelöst wird Erlauben Sie Skripten nicht, die Ausführung zu beenden, es sei denn, Sie implementieren die Beurteilung der Fehlerebene manuell in Ihrem eigenen Verarbeitungscode. Wenn das Abfangen nicht erfolgt, werden Fehler auf Benutzerebene auch an den Fehlerbehandlungsmechanismus des Systems übergeben. Der Fehlerbehandlungsmechanismus des Systems besteht darin, mit einem Fehler zu beenden und die Ausführung nach einer Warnmeldung fortzusetzen.

trigger_error("notice, go on!", E_USER_NOTICE);

echo "executing!" . PHP_EOL;

trigger_error("warning, go on!", E_USER_WARNING);

echo "executing!" . PHP_EOL;

trigger_error("error, exit!", E_USER_ERROR);

echo "not execute!";

Nach der benutzerdefinierten Fehlerbehandlung wird der Fehler nicht mehr zur Verarbeitung an das System weitergeleitet Das Skript zum Beenden der Ausführung wird einfach nicht abgefangen. Das Abfangen der von Try Catch behandelten Ausnahmen und das Anpassen einiger benutzerfreundlicher Informationsausgaben kann das Auftreten schwerwiegender Fehler nicht verhindern, und das Skript wird die Ausführung trotzdem beenden.

set_error_handler fängt die vom Benutzer ausgelösten Fehler zur Verarbeitung ab, anstatt sie an das System zu übermitteln, identifiziert jedoch nicht automatisch die Fehlerstufe. Wir müssen manuell bestimmen, ob es sich um eine FEHLERstufe zum Beenden oder um eine WARNUNG oder einen HINWEIS handelt Setzen Sie die Ausführung nach Aufforderung fort.

Empfohlenes Lernen:

php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn in PHP eine globale Ausnahme/ein globaler Fehler auftritt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen