Heim  >  Artikel  >  Backend-Entwicklung  >  Verwendung und Beispiele von PHP-Fehlerbehandlungsfunktionen

Verwendung und Beispiele von PHP-Fehlerbehandlungsfunktionen

墨辰丷
墨辰丷Original
2018-06-04 10:30:381649Durchsuche

In PHP ist die Standardfehlerbehandlung einfach. Eine Fehlermeldung wird mit dem Dateinamen, der Zeilennummer und einer Meldung, die den Fehler beschreibt, an den Browser gesendet.

In PHP ist die Standardfehlerbehandlung einfach. An den Browser wird eine Fehlermeldung mit dem Dateinamen, der Zeilennummer und einer den Fehler beschreibenden Meldung gesendet.

PHP-Fehlerbehandlung

Die Fehlerbehandlung ist ein wichtiger Bestandteil beim Erstellen von Skripten und Webanwendungen. Wenn Ihr Code keine Fehlererkennungscodierung aufweist, sieht das Programm unprofessionell aus und birgt Sicherheitsrisiken.

Dieses Tutorial behandelt einige der wichtigsten Fehlererkennungsmethoden in PHP.

Wir erklären Ihnen verschiedene Fehlerbehandlungsmethoden:

Einfache „die()“-Anweisung

Benutzerdefinierte Fehler und Fehlerauslöser

Fehlerberichte

Grundlegende Fehlerbehandlung: Verwenden Sie die Funktion die()

Zuerst zeigt dieses Beispiel eine einfache Skript, das eine Textdatei öffnet:

<?php
$file=fopen("welcome.txt","r");
?>

Wenn die Datei nicht existiert, erhalten Sie eine Fehlermeldung wie diese:

Warnung: fopen (welcome.txt) [function.fopen]: Stream konnte nicht geöffnet werden:
Keine solche Datei oder kein solches Verzeichnis in C:webfoldertest.php in Zeile 2

Um zu vermeiden, dass Benutzer Fehler wie die obige Meldung erhalten , prüfen wir, ob die Datei existiert, bevor wir darauf zugreifen:

<?php
if(!file_exists("welcome.txt"))
{
die("File not found");
}
else
{
$file=fopen("welcome.txt","r");
}
?>

Wenn die Datei nun nicht existiert, erhalten Sie eine Fehlermeldung wie diese:

Datei nicht gefunden

Der obige Code ist effizienter als der vorherige Code, da er einen einfachen Fehlerbehandlungsmechanismus verwendet, um das Skript nach einem Fehler zu beenden.

Allerdings ist es nicht immer sinnvoll, das Skript einfach zu beenden. Sehen wir uns alternative PHP-Funktionen zur Fehlerbehandlung an.

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)


参数 描述
error_level 必需。为用户定义的错误规定错误报告级别。必须是一个数字。参见下面的表格:错误报告级别。
error_message 必需。为用户定义的错误规定错误消息。
error_file 可选。规定错误发生的文件名。
error_line 可选。规定错误发生的行号。
error_context 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。

错误报告级别

这些错误报告级别是用户自定义的错误处理程序处理的不同类型的错误:

现在,让我们创建一个处理错误的函数:

function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br>";
echo "Ending Script";
die();
}

上面的代码是一个简单的错误处理函数。当它被触发时,它会取得错误级别和错误消息。然后它会输出错误级别和消息,并终止脚本。

现在,我们已经创建了一个错误处理函数,我们需要确定在何时触发该函数。


Wert Konstante Beschreibung
2 E_WARNING Nicht schwerwiegender Laufzeitfehler. Unterbrechen Sie die Skriptausführung nicht.
8 E_NOTICE Laufzeitbenachrichtigung. Tritt auf, wenn das Skript einen möglichen Fehler findet, kann aber auch auftreten, wenn 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. (In PHP 5.4 wird E_STRICT Teil von E_ALL)


设置错误处理程序

PHP 的默认错误处理程序是内建的错误处理程序。我们打算把上面的函数改造为脚本运行期间的默认错误处理程序。

可以修改错误处理程序,使其仅应用到某些错误,这样脚本就能以不同的方式来处理不同的错误。然而,在本例中,我们打算针对所有错误来使用我们自定义的错误处理程序:

set_error_handler("customError");

由于我们希望我们的自定义函数能处理所有错误,set_error_handler() 仅需要一个参数,可以添加第二个参数来规定错误级别。

实例

通过尝试输出不存在的变量,来测试这个错误处理程序:

Error: [$errno] $errstr";
}
//set error handler
set_error_handler("customError");
//trigger error
echo($test);
?>

以上代码的输出如下所示:

Error: [8] Undefined variable: test

触发错误

在脚本中用户输入数据的位置,当用户的输入无效时触发错误是很有用的。在 PHP 中,这个任务由 trigger_error() 函数完成。

实例

在本例中,如果 "test" 变量大于 "1",就会发生错误:

<?php
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below");
}
?>

以上代码的输出如下所示:

Notice: Value must be 1 or below
in C:webfoldertest.php on line 6

您可以在脚本中任何位置触发错误,通过添加的第二个参数,您能够规定所触发的错误级别。

可能的错误类型:

E_USER_ERROR - 致命的用户生成的 run-time 错误。错误无法恢复。脚本执行被中断。
E_USER_WARNING - 非致命的用户生成的 run-time 警告。脚本执行不被中断。
E_USER_NOTICE - 默认。用户生成的 run-time 通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。

在本例中,如果 "test" 变量大于 "1",则发生 E_USER_WARNING 错误。如果发生了 E_USER_WARNING,我们将使用我们自定义的错误处理程序并结束脚本:

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

以上代码的输出如下所示:

Error: [512] Value must be 1 or below
Ending Script

现在,我们已经学习了如何创建自己的 error,以及如何触发它们,接下来我们研究一下错误记录。

错误记录

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

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

通过 E-Mail 发送错误消息

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

<?php
//error handler function
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br>";
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);
}
?>

以上代码的输出如下所示:

Error: [512] Value must be 1 or below
Webmaster has been notified

接收自以上代码的邮件如下所示:

Error: [512] Value must be 1 or below

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

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐: 

PHP操作MongoDB的方法及简单分析

PHP封装的MSSql操作类以及完整实例分析

PHP中子类重载父类的方法(parent::方法名)

Das obige ist der detaillierte Inhalt vonVerwendung und Beispiele von PHP-Fehlerbehandlungsfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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