Maison développement back-end tutoriel php PHP错误处理函数_php实例

PHP错误处理函数_php实例

Jun 07, 2016 pm 05:08 PM
php错误处理 fonction de gestion des erreurs php

在 PHP 中,默认的错误处理很简单。一条错误消息会被发送到浏览器,这条消息带有文件名、行号以及描述错误的消息。

PHP 错误处理

在创建脚本和 Web 应用程序时,错误处理是一个重要的部分。如果您的代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门。

本教程介绍了 PHP 中一些最为重要的错误检测方法。

我们将为您讲解不同的错误处理方法:

简单的 "die()" 语句

自定义错误和错误触发器

错误报告

基本的错误处理:使用 die() 函数

第一个实例展示了一个打开文本文件的简单脚本:

<&#63;php
$file=fopen("welcome.txt","r");
&#63;>
Copier après la connexion

如果文件不存在,您会得到类似这样的错误:

Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in C:webfoldertest.php on line 2

为了避免用户得到类似上面的错误消息,我们在访问文件之前检测该文件是否存在:

<&#63;php
if(!file_exists("welcome.txt"))
{
die("File not found");
}
else
{
$file=fopen("welcome.txt","r");
}
&#63;>
Copier après la connexion

现在,如果文件不存在,您会得到类似这样的错误消息:

File not found

相比之前的代码,上面的代码更有效,这是由于它采用了一个简单的错误处理机制在错误之后终止了脚本。

然而,简单地终止脚本并不总是恰当的方式。让我们研究一下用于处理错误的备选的 PHP 函数。

创建自定义错误处理器

创建一个自定义的错误处理器非常简单。我们很简单地创建了一个专用函数,可以在 PHP 中发生错误时调用该函数。

该函数必须有能力处理至少两个参数 (error level 和 error message),但是可以接受最多五个参数(可选的:file, line-number 和 error context):

语法

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();
}
Copier après la connexion

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

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

常量 描述
2 E_WARNING 非致命的 run-time 错误。不暂停脚本执行。
8 E_NOTICE run-time 通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。
256 E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。
512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。
1024 E_USER_NOTICE 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())
8191 E_ALL 所有错误和警告。(在 PHP 5.4 中,E_STRICT 成为 E_ALL 的一部分)

设置错误处理程序

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

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

set_error_handler("customError");
Copier après la connexion

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

实例

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

<?php
//error handler function
function customError($errno, $errstr)
{
echo "Error: [$errno] $errstr";
}
//set error handler
set_error_handler("customError");
//trigger error
echo($test);
?>
Copier après la connexion

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

Error: [8] Undefined variable: test

触发错误

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

实例

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

<&#63;php
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below");
}
&#63;>
Copier après la connexion

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

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,我们将使用我们自定义的错误处理程序并结束脚本:

<?php
//error handler function
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br>";
echo "Ending Script";
die();
}
//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);
}
?>
Copier après la connexion

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

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

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

错误记录

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

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

通过 E-Mail 发送错误消息

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

<&#63;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);
}
&#63;>
Copier après la connexion

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

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

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

Error: [512] Value must be 1 or below

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

以上内容是小编给大家介绍的PHP错误处理函数,希望对大家以上帮助!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel est le mécanisme de gestion des erreurs en PHP ? Quel est le mécanisme de gestion des erreurs en PHP ? May 12, 2023 pm 07:31 PM

PHP est un langage de programmation côté serveur populaire et puissant qui peut être utilisé pour développer diverses applications Web. Tout comme les autres langages de programmation, PHP est sujet aux erreurs et aux exceptions. Ces erreurs et exceptions peuvent être causées par diverses raisons, telles que des erreurs de programme, des erreurs de serveur, des erreurs de saisie utilisateur, etc. Afin de garantir la stabilité et la fiabilité du programme, PHP fournit un ensemble complet de mécanismes de gestion des erreurs. L'idée de base du mécanisme de gestion des erreurs PHP est la suivante : lorsqu'une erreur se produit, le programme arrêtera l'exécution et affichera un message d'erreur. nous pouvons

Comment gérer les erreurs de syntaxe en PHP Comment gérer les erreurs de syntaxe en PHP Aug 07, 2023 pm 04:46 PM

Comment gérer les erreurs de syntaxe en PHP Introduction : Lors du développement de programmes PHP, vous rencontrez souvent des erreurs de syntaxe. Les erreurs de syntaxe sont causées par un code qui viole les règles de syntaxe PHP, ce qui entraîne l'échec de l'exécution correcte du script. Cet article présentera quelques façons de gérer les erreurs de syntaxe PHP et fournira des exemples de code correspondants. Utilisation de la fonction d'invite d'erreur PHP fournit une fonction d'invite d'erreur riche. Ces invites peuvent être activées pendant le processus de développement pour découvrir et résoudre les erreurs de syntaxe en temps opportun. Vous pouvez définir l'erreur en

Comment gérer les erreurs de fonctionnement des fichiers PHP et générer les messages d'erreur correspondants Comment gérer les erreurs de fonctionnement des fichiers PHP et générer les messages d'erreur correspondants Aug 08, 2023 am 10:30 AM

Comment gérer les erreurs d'opération de fichier PHP et générer les messages d'erreur correspondants Lorsque vous utilisez PHP pour effectuer des opérations sur les fichiers, vous pouvez rencontrer diverses erreurs, telles qu'un fichier introuvable, des erreurs d'autorisation, etc. Ces erreurs peuvent empêcher le programme de fonctionner correctement, il est donc très important de gérer les erreurs d'opération sur les fichiers de manière appropriée. Cet article expliquera comment gérer les erreurs de fonctionnement des fichiers PHP et montrera comment générer les messages d'erreur correspondants. 1. La méthode de gestion des erreurs utilise l'opérateur de contrôle d'erreur PHP fournit l'opérateur de contrôle d'erreur "@", qui peut être ajouté avant d'exécuter des instructions susceptibles de provoquer des erreurs.

Comment gérer les erreurs de chemin de fichier PHP et générer les messages d'erreur correspondants Comment gérer les erreurs de chemin de fichier PHP et générer les messages d'erreur correspondants Aug 06, 2023 am 10:12 AM

Comment gérer les erreurs de chemin de fichier PHP et générer les messages d'erreur correspondants Lors du développement et de la maintenance d'applications PHP, des erreurs de chemin de fichier sont souvent rencontrées. Lorsqu'un fichier qui n'existe pas est référencé ou qu'un chemin incorrect est spécifié, une erreur fatale est générée dans PHP, entraînant l'échec du bon fonctionnement de l'application. Afin de mieux déboguer et gérer cette situation, nous pouvons gérer les erreurs de chemin de fichier PHP des manières suivantes et générer les messages d'erreur correspondants. Utiliser des chemins absolus Lorsque vous référencez des fichiers, essayez d'utiliser des chemins absolus au lieu de chemins relatifs.

Résoudre l'erreur PHP : appeler une méthode de classe non définie Résoudre l'erreur PHP : appeler une méthode de classe non définie Aug 18, 2023 pm 05:09 PM

Résolution des erreurs PHP : appel de méthodes de classe non définies. Lors du développement PHP, vous rencontrez souvent des erreurs lors de l'appel de méthodes de classe non définies. Cette situation est généralement causée par une écriture de code irrégulière ou par des méthodes de classe inexistantes. Ci-dessous, nous aborderons quelques méthodes courantes pour résoudre ce problème. Vérifiez si la méthode de classe existe. Lorsqu'un message d'erreur vous invite à appeler une méthode de classe non définie, vérifiez d'abord si la méthode existe dans la classe correspondante. Vous pouvez vérifier si une méthode existe dans une classe en utilisant la fonction method_exists().

Comment gérer les erreurs dans le développement des fonctions backend PHP ? Comment gérer les erreurs dans le développement des fonctions backend PHP ? Aug 04, 2023 pm 01:19 PM

Comment gérer les erreurs dans le développement des fonctions backend PHP ? En tant que développeur backend PHP, nous rencontrons souvent diverses erreurs au cours du processus de développement. Une bonne gestion des erreurs est un facteur important pour garantir la stabilité du système et l’expérience utilisateur. Dans cet article, je partagerai quelques méthodes et techniques de gestion des erreurs dans le développement de fonctions backend PHP et fournirai des exemples de code correspondants. Définition du niveau de rapport d'erreurs PHP fournit un paramètre de niveau de rapport d'erreurs qui peut être défini pour définir le type d'erreurs à signaler. Utilisez error_repo

Gestion des erreurs PHP : meilleures pratiques et recommandations Gestion des erreurs PHP : meilleures pratiques et recommandations Aug 07, 2023 pm 12:25 PM

Gestion des erreurs PHP : meilleures pratiques et recommandations La gestion des erreurs est une tâche très importante lors de l'écriture de code PHP. Si les erreurs ne sont pas traitées correctement, cela peut entraîner des vulnérabilités et des problèmes de sécurité dans votre application. Dans le même temps, une bonne gestion des erreurs contribue également à améliorer la maintenabilité et l’évolutivité du code. Cet article présentera quelques bonnes pratiques et recommandations pour la gestion des erreurs PHP et fournira quelques exemples de code. Utilisation de la gestion des exceptions En PHP, les exceptions sont un mécanisme utilisé pour gérer les erreurs d'exécution. En utilisant des exceptions, des erreurs peuvent être

Gestion des erreurs PHP et journalisation des exceptions dans le développement de petits programmes Gestion des erreurs PHP et journalisation des exceptions dans le développement de petits programmes Jul 04, 2023 am 11:16 AM

Gestion des erreurs PHP et journalisation des exceptions dans le développement de mini-programmes Alors que les mini-programmes continuent de devenir de plus en plus populaires, de plus en plus de développeurs commencent à utiliser le langage PHP pour développer des backends de mini-programmes. Pendant le développement, la gestion des erreurs et la journalisation des exceptions sont cruciales. Cet article expliquera comment gérer les erreurs PHP et enregistrer les journaux d'exceptions dans le développement de petits programmes, et donnera des exemples de code correspondants. 1. Paramètres de rapport d'erreurs de gestion des erreurs PHP en PHP, nous pouvons modifier error_reporting et display_err

See all articles