Gestion des erreurs en PHP

PHP est utilisé pour le développement web. La gestion des erreurs en PHP est presque similaire à la gestion des erreurs dans tous les langages de programmation. La gestion des erreurs par défaut en PHP donnera le nom du fichier, le numéro de ligne et le type d’erreur.
 
 
Nous allons voir différentes méthodes de gestion des erreurs :

  • En utilisant la méthode die()
  • Gestion des erreurs personnalisée

 

Utilisation de la fonction die()

Le premier exemple montre un simple script qui ouvre un fichier texte :

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

Si le fichier n’existe pas, vous pourriez obtenir une erreur comme celle-ci:

Warning: fopen(file.txt) [function.fopen]: failed to open stream:
No such file or directory in C:\waytolearnx\app1.php on line 1

Pour éviter que l’utilisateur n’obtienne un message d’erreur comme celui ci-dessus, nous testons si le fichier existe avant de tenter d’y accéder :

<?php
	if(file_exists("file.txt")) {
	  $file = fopen("file.txt", "r");
	} else {
	  die("Erreur : Le fichier n'existe pas.");
	}
?>

Maintenant, si le fichier n’existe pas, vous obtenez une erreur comme celle-ci :

Erreur : Le fichier n'existe pas.

Le code ci-dessus est plus efficace que le code précédent, car il utilise un mécanisme simple de gestion des erreurs pour arrêter le script après l’erreur.

Pourtant, arrêter simplement le script n’est pas toujours la bonne façon de procéder. Regardons aux fonctions alternatives pour la gestion des erreurs.
 
 

Gestion des erreurs personnalisée

La création d’un gestionnaire d’erreurs personnalisé en PHP est assez simple. Créez une fonction qui peut être appelée lorsqu’une erreur s’est produite en PHP.

Syntaxe:

error_function( 
       $error_level, 
       $error_message, 
       $error_file, 
       $error_line, 
       $error_context
)

Les paramètres :
Cette fonction accepte cinq paramètres comme mentionné ci-dessus et décrits ci-dessous :

  • $error_level : C’est un paramètre obligatoire et il doit être un entier. Il y a des niveaux d’erreur prédéfinis.
    • 1 : E_ERROR :erreur d’exécution fatale du script
    • 2 : E_WARNING : erreur d’exécution non fatale ; l’exécution du script a été arrêtée
    • 4 : E_PARSE : erreur de compilation généré par l’analyseur
    • 8 :E_NOTICE : Le script a trouvé quelque chose qui pourrait être une erreur
    • 16 :E_CORE_ERROR :Erreurs fatales survenues au démarrage initial du script
    • 32 :E_CORE_WARNING : Erreurs non fatales survenues lors du démarrage initial du script
    • 8191 :E_ALL : Toutes les erreurs et les warning.
  • $error_message : C’est un paramètre obligatoire et c’est le message que l’utilisateur veut afficher.
  • $error_file : C’est un paramètre optionnel et il est utilisé pour spécifier le fichier dans lequel l’erreur s’est produite.
  • $error_line : C’est un paramètre optionnel et utilisé pour spécifier le numéro de ligne dans lequel l’erreur s’est produite.
  • $error_context : C’est un paramètre optionnel et utilisé pour spécifier un tableau contenant toutes les variables et leur valeur quand l’erreur est survenue.

 
Maintenant, créons une fonction pour gérer les erreurs :

function errorPerso($nbr, $msg) {
  echo "<b>Error:</b> [$nbr] $msg<br>";
  echo "Fin de script!";
  // Lorsque l'erreur s'est produite, le script doit être arrêté
  die();
}

 
 

La fonction set_error_handler()

Après avoir créé la fonction errorPerso(), vous devez définir un gestionnaire d’erreur personnalisé car PHP le gère normalement, mais si l’utilisateur fait un traitement d’erreur personnalisé, il doit le mettre à la place de l’argument et passer la fonction errorPerso comme une chaîne de caractères.

<?php 
	// Crée la fonction qui affiche le message d'erreur à l'utilisateur 
	function errorPerso($nbr, $msg) {
	  echo "<b>Error:</b> [$nbr] $msg<br>";
	  echo "Fin de script!";
	  // Lorsque l'erreur s'est produite, le script doit être arrêté
	  die();
	}

	set_error_handler("errorPerso"); 
	  
	$x = 5; 
	$y = 0; 
	  
	// Cela va générer une erreur
	echo($x / $y); 
?>

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

Error: [2] Division by zero 
Fin de script!

 

Une réflexion sur “Gestion des erreurs en PHP

  • février 14, 2021 à 10:27 pm
    Permalien

    bonjour monsieur ou madame svp je suis entrain de faire un formulaire mais j’ ai un problème au niveau de la base de donnée pouvez vous m’aider voici l’erreur:Fatal error: Uncaught PDOException: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in C:\xampp 1\htdocs\form\Ajouter.php:46 Stack trace: #0 C:\xampp 1\htdocs\form\Ajouter.php(46): PDOStatement->execute() #1 {main} thrown in C:\xampp 1\htdocs\form\Ajouter.php on line 46

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *