Personnalisation du gestionnaire d'exceptions PHP
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Dans PHP8, les expressions de correspondance sont une nouvelle structure de contrôle qui renvoie différents résultats en fonction de la valeur de l'expression. 1) Il est similaire à une instruction Switch, mais renvoie une valeur au lieu d'un bloc d'instruction d'exécution. 2) L'expression de correspondance est strictement comparée (===), ce qui améliore la sécurité. 3) Il évite les éventuelles omissions de rupture dans les instructions de commutation et améliore la simplicité et la lisibilité du code.

En PHP, vous pouvez prévenir efficacement les attaques du CSRF en utilisant des jetons imprévisibles. Les méthodes spécifiques comprennent: 1. Générer et intégrer les jetons CSRF dans la forme; 2. Vérifiez la validité du jeton lors du traitement de la demande.

La carte PS est "Chargement"? Les solutions comprennent: la vérification de la configuration de l'ordinateur (mémoire, disque dur, processeur), nettoyage de la fragmentation du disque dur, mise à jour du pilote de carte graphique, ajustement des paramètres PS, réinstaller PS et développer de bonnes habitudes de programmation.

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

Les types stricts en PHP sont activés en ajoutant Declare (strict_types = 1); en haut du fichier. 1) Il force la vérification du type des paramètres de fonction et des valeurs de retour pour éviter la conversion de type implicite. 2) L'utilisation de types stricts peut améliorer la fiabilité et la prévisibilité du code, réduire les bogues et améliorer la maintenabilité et la lisibilité.

Dans PHP, le mot-clé final est utilisé pour empêcher les classes d'être héritées et les méthodes écrasées. 1) Lors du marquage de la classe comme final, la classe ne peut pas être héritée. 2) Lors du marquage de la méthode comme final, la méthode ne peut pas être réécrite par la sous-classe. L'utilisation de mots clés finaux garantit la stabilité et la sécurité de votre code.

L'avenir de PHP sera réalisé en s'adaptant aux nouvelles tendances technologiques et en introduisant des fonctionnalités innovantes: 1) s'adapter aux architectures de cloud computing, de conteneurisation et de microservice, en prenant en charge Docker et Kubernetes; 2) introduire des compilateurs JIT et des types d'énumération pour améliorer l'efficacité des performances et du traitement des données; 3) Optimiser en continu les performances et promouvoir les meilleures pratiques.
