Heim Backend-Entwicklung PHP-Tutorial Anpassung des PHP-Ausnahmehandlers

Anpassung des PHP-Ausnahmehandlers

Dec 23, 2017 pm 03:18 PM
php 处理器 异常

Es ist unvermeidlich, dass bei der Programmierung ungewöhnliche Fehler auftreten. Was wir tun müssen, ist, Ausnahmen angemessen zu behandeln, damit sie von Benutzern nicht wahrgenommen werden. Heute werde ich eine Methode zum Anpassen von Ausnahmehandlern vorstellen.

Erstellen eines benutzerdefinierten Fehlerhandlers

Das Erstellen eines benutzerdefinierten Fehlerhandlers ist sehr einfach. Wir haben einfach eine dedizierte Funktion erstellt, die aufgerufen werden kann, wenn in PHP ein Fehler auftritt.

Die Funktion muss mindestens zwei Parameter (Fehlerstufe und Fehlermeldung) verarbeiten können, kann aber bis zu fünf Parameter akzeptieren (optional: Datei, Zeilennummer und Fehlerkontext):

Syntax

error_function(error_level,error_message,

error_file,error_line,error_context)

Parameterbeschreibung

error_level

Erforderlich. Gibt die Fehlerberichtsebene für benutzerdefinierte Fehler an. Muss ein Wert sein.

Siehe Tabelle unten: Fehlermeldestufen.

error_message Erforderlich. Gibt Fehlermeldungen für benutzerdefinierte Fehler an.

error_file Optional. Gibt den Namen der Datei an, in der der Fehler aufgetreten ist.

error_line Optional. Gibt die Zeilennummer an, in der der Fehler aufgetreten ist.

error_context Optional. Gibt ein Array an, das alle zum Zeitpunkt des Fehlers verwendeten Variablen und deren Werte enthält.

Fehlerberichtsebenen

Diese Fehlerberichtsebenen sind verschiedene Arten von Fehlern, die Fehlerhandler verarbeiten sollen:

Wertkonstante Beschreibung

2 E_WARNING Nicht schwerwiegend Laufzeitfehler. Unterbrechen Sie die Skriptausführung nicht.

8 E_NOTICE

Laufzeitbenachrichtigung.

Das Skript erkennt, dass möglicherweise ein Fehler auftritt, dieser kann jedoch auch auftreten, während das Skript normal ausgeführt wird.

256 E_USER_ERROR Schwerwiegender benutzergenerierter Fehler. Dies ähnelt E_ERROR, das der Programmierer mit der PHP-Funktion trigger_error() setzt.

512 E_USER_WARNING Nicht schwerwiegende, vom Benutzer generierte Warnung. Dies ähnelt der E_WARNING, die der Programmierer mit der PHP-Funktion trigger_error() setzt.

1024 E_USER_NOTICE Benutzergenerierte Benachrichtigung. Dies ähnelt E_NOTICE, das vom Programmierer mithilfe der PHP-Funktion trigger_error() festgelegt wird.

4096 E_RECOVERABLE_ERROR Abfangbarer schwerwiegender Fehler. Wie E_ERROR, kann aber von einem benutzerdefinierten Handler abgefangen werden. (Siehe set_error_handler())

8191 E_ALL

Alle Fehler und Warnungen, außer Ebene E_STRICT.

(In PHP 6.0 ist E_STRICT Teil von E_ALL)

Jetzt erstellen wir eine Funktion, die Fehler behandelt:

function customError($errno, $errstr)
{
echo "Error: [$errno] $errstr
";
echo "Ending Script";
die();
}
Nach dem Login kopieren

Der obige Code ist eine einfache Fehlerbehandlung Funktion. Wenn es ausgelöst wird, erhält es die Fehlerstufe und die Fehlermeldung. Anschließend werden die Fehlerstufe und die Meldung ausgegeben und das Skript beendet.

Da wir nun eine Fehlerbehandlungsfunktion erstellt haben, müssen wir bestimmen, wann sie ausgelöst werden soll.

Fehlerhandler festlegen

Der Standard-Fehlerhandler von PHP ist der integrierte Fehlerhandler. Wir werden die obige Funktion in den Standard-Fehlerbehandler umwandeln, wenn das Skript ausgeführt wird.

Der Fehlerhandler kann so geändert werden, dass er nur für bestimmte Fehler gilt, sodass das Skript verschiedene Fehler auf unterschiedliche Weise behandeln kann. In diesem Fall verwenden wir jedoch unseren benutzerdefinierten Fehlerhandler für alle Fehler:

set_error_handler("customError");

Da wir möchten, dass unsere benutzerdefinierte Funktion alle Fehler behandelt, set_error_handler() erfordert nur einen Parameter, und ein zweiter Parameter kann hinzugefügt werden, um die Fehlerstufe anzugeben.

Beispiel

Testen Sie diesen Fehlerhandler, indem Sie versuchen, eine Variable auszugeben, die nicht existiert:

<?php
//error handler function
function customError($errno, $errstr)
{
echo "Error: [$errno] $errstr";
}
//set error handler
set_error_handler("customError");
//trigger error
echo($test);
?>
Nach dem Login kopieren

Die Ausgabe des obigen Codes sollte wie folgt aussehen:

Fehler: [8] Undefinierte Variable: Test

Fehler auslösen

Wenn der Benutzer Daten in das Skript eingibt, ist es sinnvoll, einen Fehler auszulösen, wenn die Eingabe des Benutzers ungültig ist. In PHP wird diese Aufgabe durch trigger_error() erledigt.

Beispiel

Wenn in diesem Beispiel die Variable „test“ größer als „1“ ist, tritt ein Fehler auf:

$ test=2;

if ($test>1)

{

trigger_error("Wert muss 1 oder kleiner sein");

}

?>

Die Ausgabe des obigen Codes sollte etwa so aussehen:

Hinweis: Der Wert muss 1 oder kleiner sein

in C :webfoldertest.php in Zeile 6

Sie können an einer beliebigen Stelle im Skript einen Fehler auslösen. Durch Hinzufügen des zweiten Parameters können Sie die Fehlerstufe angeben, die ausgelöst wird.

Mögliche Fehlertypen:

E_USER_ERROR – Schwerwiegender, vom Benutzer generierter Laufzeitfehler. Der Fehler kann nicht behoben werden. Die Skriptausführung wurde unterbrochen.

E_USER_WARNING – Nicht schwerwiegende, vom Benutzer generierte Laufzeitwarnung. Die Skriptausführung wird nicht unterbrochen.

E_USER_NOTICE – Standard. Vom Benutzer generierte Laufzeitbenachrichtigungen. Das Skript hat einen möglichen Fehler gefunden, der möglicherweise während der normalen Ausführung des Skripts aufgetreten ist.

Beispiel

Wenn in diesem Beispiel die Variable „test“ größer als „1“ ist, tritt der Fehler E_USER_WARNING auf. Wenn E_USER_WARNING auftritt, verwenden wir unseren benutzerdefinierten Fehlerhandler und beenden das Skript:

1)
{
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>
Nach dem Login kopieren

Die Ausgabe des obigen Codes sollte wie folgt aussehen:

Fehler: [512] Wert muss sein 1 oder niedriger

Endskript

Da wir nun gelernt haben, wie wir unsere eigenen Fehler erstellen und auslösen können, werfen wir einen Blick auf die Fehlerprotokollierung.

Fehleraufzeichnung

默认地,根据在 php.ini 中的 error_log 配置,PHP 向服务器的错误记录系统或文件发送错误记录。通过使用 error_log() 函数,您可以向指定的文件或远程目的地发送错误记录。

通过电子邮件向您自己发送错误消息,是一种获得指定错误的通知的好办法。

通过 E-Mail 发送错误消息

在下面的例子中,如果特定的错误发生,我们将发送带有错误消息的电子邮件,并结束脚本:

<?php
//error handler function
function customError($errno, $errstr)
{
echo "Error: [$errno] $errstr
";
echo "Webmaster has been notified";
error_log("Error: [$errno] $errstr",1,
"someone@example.com","From: webmaster@example.com");
}
//set error handler
set_error_handler("customError",E_USER_WARNING);
//trigger error
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>
Nach dem Login kopieren

以上代码的输出应该类似这样:

Error: [512] Value must be 1 or below

Webmaster has been notified

接收自以上代码的邮件类似这样:

Error: [512] Value must be 1 or below

这个方法不适合所有的错误。常规错误应当通过使用默认的 PHP 记录系统在服务器上进行记录。

相关推荐:

PHP 异常处理 Exception 类

PHP 错误处理机制

php 错误级别设置方法

Das obige ist der detaillierte Inhalt vonAnpassung des PHP-Ausnahmehandlers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Erklären Sie den Match -Expression (Php 8) und wie er sich vom Schalter unterscheidet. Erklären Sie den Match -Expression (Php 8) und wie er sich vom Schalter unterscheidet. Apr 06, 2025 am 12:03 AM

In PHP8 sind Übereinstimmungsausdrücke eine neue Kontrollstruktur, die unterschiedliche Ergebnisse basierend auf dem Wert des Expression zurückgibt. 1) Es ähnelt einer Switch -Anweisung, gibt jedoch einen Wert anstelle eines Ausführungsanweisungsblocks zurück. 2) Der Match -Ausdruck wird streng verglichen (===), was die Sicherheit verbessert. 3) Es vermeidet mögliche Auslassungen in Switch -Anweisungen und verbessert die Einfachheit und Lesbarkeit des Codes.

Was ist Cross-Site-Anforderungsfälschung (CSRF) und wie implementieren Sie den CSRF-Schutz in PHP? Was ist Cross-Site-Anforderungsfälschung (CSRF) und wie implementieren Sie den CSRF-Schutz in PHP? Apr 07, 2025 am 12:02 AM

In PHP können Sie CSRF -Angriffe effektiv verhindern, indem Sie unvorhersehbare Token verwenden. Spezifische Methoden umfassen: 1. CSRF -Token in der Form erzeugen und einbetten; 2. Überprüfen Sie die Gültigkeit des Tokens bei der Bearbeitung der Anfrage.

Wie kann man das Problem des Ladens lösen, wenn PS immer zeigt, dass es geladen wird? Wie kann man das Problem des Ladens lösen, wenn PS immer zeigt, dass es geladen wird? Apr 06, 2025 pm 06:30 PM

PS -Karte ist "Laden"? Zu den Lösungen gehören: Überprüfung der Computerkonfiguration (Speicher, Festplatte, Prozessor), Reinigen der Festplattenfragmentierung, Aktualisierung des Grafikkartentreibers, Anpassung der PS -Einstellungen, der Neuinstallation von PS und der Entwicklung guter Programmiergewohnheiten.

PHP und Python: Vergleich von zwei beliebten Programmiersprachen PHP und Python: Vergleich von zwei beliebten Programmiersprachen Apr 14, 2025 am 12:13 AM

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

Erklären Sie strenge Typen (deklar (strict_types = 1);) in PHP. Erklären Sie strenge Typen (deklar (strict_types = 1);) in PHP. Apr 07, 2025 am 12:05 AM

Strenge Typen in PHP werden durch Hinzufügen von Declare aktiviert (strict_types = 1); oben in der Datei. 1) IT erzwingt die Typprüfung der Funktionsparameter und der Rückgabewerte, um die implizite Typumwandlung zu verhindern. 2) Die Verwendung strenger Typen kann die Zuverlässigkeit und Vorhersehbarkeit des Codes verbessern, Fehler reduzieren und die Wartbarkeit und Lesbarkeit verbessern.

Wie können Sie verhindern, dass eine Klasse erweitert wird oder eine Methode in PHP überschrieben wird? (endgültiges Schlüsselwort) Wie können Sie verhindern, dass eine Klasse erweitert wird oder eine Methode in PHP überschrieben wird? (endgültiges Schlüsselwort) Apr 08, 2025 am 12:03 AM

In PHP wird das endgültige Schlüsselwort verwendet, um zu verhindern, dass Klassen vererbt werden, und die Methoden überschrieben werden. 1) Wenn die Klasse als endgültig markiert wird, kann die Klasse nicht vererbt werden. 2) Wenn die Methode als endgültig markiert wird, kann die Methode nicht von der Unterklasse neu geschrieben werden. Durch die Verwendung von endgültigen Schlüsselwörtern wird die Stabilität und Sicherheit Ihres Codes sichergestellt.

Die Zukunft von PHP: Anpassungen und Innovationen Die Zukunft von PHP: Anpassungen und Innovationen Apr 11, 2025 am 12:01 AM

Die Zukunft von PHP wird erreicht, indem sich an neue Technologietrends angepasst und innovative Funktionen eingeführt werden: 1) Anpassung an Cloud Computing, Containerisierung und Microservice -Architekturen, Unterstützung von Docker und Kubernetes; 2) Einführung von JIT -Compilern und Aufzählungsarten zur Verbesserung der Leistung und der Datenverarbeitungseffizienz; 3) die Leistung kontinuierlich optimieren und Best Practices fördern.

See all articles