Maison > développement back-end > tutoriel php > Personnalisation du gestionnaire d'exceptions PHP

Personnalisation du gestionnaire d'exceptions PHP

*文
Libérer: 2023-03-18 09:54:02
original
2291 Les gens l'ont consulté

Il est inévitable de rencontrer des erreurs anormales dans la programmation. Ce que nous devons faire, c'est gérer les exceptions de manière raisonnable afin qu'elles ne soient pas perçues par les utilisateurs. Aujourd'hui, je vais partager une méthode de personnalisation des gestionnaires d'exceptions.

Création d'un gestionnaire d'erreurs personnalisé

Créer un gestionnaire d'erreurs personnalisé est très simple. Nous avons simplement créé une fonction dédiée qui peut être appelée lorsqu'une erreur survient en PHP.

La fonction doit être capable de gérer au moins deux paramètres (niveau d'erreur et message d'erreur), mais peut accepter jusqu'à cinq paramètres (facultatif : fichier, numéro de ligne et contexte d'erreur) :

Syntaxe

error_function(error_level,error_message,

error_file,error_line,error_context)

Description du paramètre

error_level

Obligatoire. Spécifie le niveau de rapport d'erreurs pour les erreurs définies par l'utilisateur. Doit être une valeur.

Voir le tableau ci-dessous : Niveaux de rapport d'erreurs.

error_message Obligatoire. Spécifie les messages d'erreur pour les erreurs définies par l'utilisateur.

error_file Facultatif. Spécifie le nom du fichier dans lequel l'erreur s'est produite.

error_line Facultatif. Spécifie le numéro de ligne où l'erreur s'est produite.

error_context Facultatif. Spécifie un tableau contenant chaque variable utilisée lorsque l'erreur s'est produite et leurs valeurs.

Niveaux de rapport d'erreurs

Ces niveaux de rapport d'erreurs sont différents types d'erreurs que les gestionnaires d'erreurs sont conçus pour gérer :

Constante de valeur Description

2 E_WARNING Non fatal erreur d'exécution. Ne suspendez pas l’exécution du script.

8 E_NOTICE

Notification d'exécution.

Le script détecte qu'une erreur peut se produire, mais elle peut également se produire alors que le script s'exécute normalement.

256 E_USER_ERROR Erreur fatale générée par l'utilisateur. Ceci est similaire à E_ERROR défini par le programmeur à l'aide de la fonction PHP trigger_error().

512 E_USER_WARNING Avertissement non fatal généré par l'utilisateur. Ceci est similaire au E_WARNING défini par le programmeur à l'aide de la fonction PHP trigger_error().

1024 E_USER_NOTICE Notification générée par l'utilisateur. Ceci est similaire à E_NOTICE défini par le programmeur à l'aide de la fonction PHP trigger_error().

4096 E_RECOVERABLE_ERROR Erreur fatale récupérable. Comme E_ERROR, mais peut être intercepté par un gestionnaire défini par l'utilisateur. (Voir set_error_handler())

8191 E_ALL

Toutes les erreurs et avertissements, sauf le niveau E_STRICT.

(En PHP 6.0, E_STRICT fait partie de E_ALL)

Maintenant, créons une fonction qui gère les erreurs :

function customError($errno, $errstr)
{
echo "Error: [$errno] $errstr
";
echo "Ending Script";
die();
}
Copier après la connexion

Le code ci-dessus est une simple gestion des erreurs fonction. Lorsqu'il est déclenché, il obtient le niveau d'erreur et le message d'erreur. Il imprime ensuite le niveau d'erreur et le message, puis termine le script.

Maintenant que nous avons créé une fonction de gestion des erreurs, nous devons déterminer quand la déclencher.

Définir le gestionnaire d'erreurs

Le gestionnaire d'erreurs par défaut de PHP est le gestionnaire d'erreurs intégré. Nous allons transformer la fonction ci-dessus en gestionnaire d'erreurs par défaut lorsque le script est en cours d'exécution.

Le gestionnaire d'erreurs peut être modifié pour qu'il ne s'applique qu'à certaines erreurs, afin que le script puisse gérer différentes erreurs de différentes manières. Cependant, dans ce cas, nous allons utiliser notre gestionnaire d'erreurs personnalisé pour toutes les erreurs :

set_error_handler("customError");

Puisque nous voulons que notre fonction personnalisée gère toutes les erreurs, set_error_handler() ne nécessite qu'un seul paramètre, et un deuxième paramètre peut être ajouté pour spécifier le niveau d'erreur.

Exemple

Testez ce gestionnaire d'erreurs en essayant de générer une variable qui n'existe pas :

<?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

La sortie du code ci-dessus devrait ressembler à ceci :

Erreur : [8] Variable non définie : test

Erreur de déclenchement

Lorsque l'utilisateur saisit des données dans le script, il est utile de déclencher une erreur lorsque la saisie de l'utilisateur n'est pas valide. En PHP, cette tâche est accomplie par trigger_error().

Exemple

Dans cet exemple, si la variable "test" est supérieure à "1", une erreur se produira :

$ test=2;

if ($test>1)

{

trigger_error("La valeur doit être inférieure ou égale à 1");

}

?>

Le résultat du code ci-dessus devrait être similaire à ceci :

Remarque : la valeur doit être inférieure ou égale à 1

en C :webfoldertest.php en ligne 6

Vous pouvez déclencher une erreur n'importe où dans le script En ajoutant le deuxième paramètre, vous pouvez spécifier le niveau d'erreur qui est déclenché.

Types d'erreurs possibles :

E_USER_ERROR - Erreur d'exécution fatale générée par l'utilisateur. L'erreur ne peut pas être récupérée. L'exécution du script a été interrompue.

E_USER_WARNING - Avertissement d'exécution non fatal généré par l'utilisateur. L'exécution du script n'est pas interrompue.

E_USER_NOTICE - Par défaut. Notifications d'exécution générées par l'utilisateur. Le script a détecté une erreur possible, qui peut s'être produite alors que le script s'exécutait normalement.

Exemple

Dans cet exemple, si la variable "test" est supérieure à "1", l'erreur E_USER_WARNING se produit. Si E_USER_WARNING se produit, nous utiliserons notre gestionnaire d'erreurs personnalisé et terminerons le script :

1)
{
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>
Copier après la connexion

La sortie du code ci-dessus devrait ressembler à ceci :

Erreur : [512] La valeur doit être 1 ou inférieur

Script de fin

Maintenant que nous avons appris comment créer nos propres erreurs et comment les déclencher, examinons la journalisation des erreurs.

Enregistrement des erreurs

默认地,根据在 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);
}
?>
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 异常处理 Exception 类

PHP 错误处理机制

php 错误级别设置方法

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal