Chapitre 19 : Gestion des erreurs
Maîtrisez la gestion des erreurs en PHP avec ce guide complet sur le débogage, les exceptions et les bonnes pratiques de journalisation.
1. Introduction
Les erreurs peuvent survenir à tout moment dans un script PHP : fichiers manquants, mauvaises saisies, division par zéro, etc. Savoir détecter, gérer et afficher ces erreurs proprement est crucial pour le débogage et la sécurité.
2. Types d'erreurs
- Notice : avertissement léger (variable non initialisée)
- Warning : erreur non bloquante (fichier introuvable)
- Error : erreur fatale (interrompt le script)
- Exception : levée manuellement avec
throw
3. Affichage des erreurs
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
?>
ini_set("display_errors", 1);
error_reporting(E_ALL);
?>
Important : À utiliser en développement uniquement (jamais en production).
4. Enregistrer les erreurs dans un fichier
<?php
ini_set("log_errors", 1);
ini_set("error_log", "logs/erreurs.log");
?>
ini_set("log_errors", 1);
ini_set("error_log", "logs/erreurs.log");
?>
Pratique pour garder une trace des erreurs sans les afficher à l'utilisateur.
5. Déboguer avec var_dump() et print_r()
<?php
$produit = ["nom" => "Clavier", "prix" => 29.99];
var_dump($produit); // Affiche structure et type
print_r($produit); // Affiche lisiblement le contenu
?>
$produit = ["nom" => "Clavier", "prix" => 29.99];
var_dump($produit); // Affiche structure et type
print_r($produit); // Affiche lisiblement le contenu
?>
Idéal pour inspecter des tableaux ou des objets.
6. Gérer les erreurs avec try/catch
Les exceptions permettent de capturer des erreurs critiques sans interrompre le script :
<?php
try {
if (!file_exists("fichier.txt")) {
throw new Exception("Fichier introuvable !");
}
echo file_get_contents("fichier.txt");
} catch (Exception $e) {
echo "Erreur : " . $e->getMessage();
}
?>
try {
if (!file_exists("fichier.txt")) {
throw new Exception("Fichier introuvable !");
}
echo file_get_contents("fichier.txt");
} catch (Exception $e) {
echo "Erreur : " . $e->getMessage();
}
?>
7. Créer ses propres exceptions
<?php
class MonException extends Exception {}
try {
throw new MonException("Erreur personnalisée");
} catch (MonException $e) {
echo $e->getMessage();
}
?>
class MonException extends Exception {}
try {
throw new MonException("Erreur personnalisée");
} catch (MonException $e) {
echo $e->getMessage();
}
?>
8. À retenir
error_reporting()etini_set()gèrent l'affichage des erreursvar_dump()etprint_r()sont utiles pour déboguertry / catchpermet de capturer les exceptions- On peut créer ses propres classes d'erreurs personnalisées
- Les erreurs doivent être journalisées en production, mais jamais affichées
9. Exercices proposés
- Afficher proprement une erreur si un fichier n'existe pas.
- Créer une fonction qui lève une exception si une variable est vide.
- Créer une classe d'exception personnalisée et l'utiliser avec
throw.
10. Ce que vous apprendrez ensuite
Dans le chapitre 20, vous verrez comment inclure et organiser plusieurs fichiers PHP à l'aide de include, require, et les bonnes pratiques pour structurer vos projets.