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(); }
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); ?>
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); } ?>
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); } ?>
以上代码的输出应该类似这样:
Error: [512] Value must be 1 or below
Webmaster has been notified
接收自以上代码的邮件类似这样:
Error: [512] Value must be 1 or below
这个方法不适合所有的错误。常规错误应当通过使用默认的 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!