📘 Chapitre 4 – Gérer les erreurs avec try/catch et exceptions PDO
1. 🎯 Objectif pédagogique
Savoir détecter et gérer les erreurs liées aux opérations sur la base de données (connexion, requêtes SQL) en utilisant les exceptions PDO et les blocs try/catch.
2. 📚 Concepts abordés
- Utilisation des blocs
try
etcatch
en PHP - Gestion des exceptions
PDOException
- L’option
PDO::ATTR_ERRMODE
- Affichage contrôlé des messages d’erreur
- Bonnes pratiques pour le debugging et la sécurité
3. 🧠 Explication théorique
Lorsqu’une erreur survient (ex. mauvaise requête SQL ou identifiants incorrects), PDO lève une exception. En activant le mode exception avec :
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
le code peut intercepter l’erreur via un try/catch
.
Exemple simple :
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
} catch (PDOException $e) {
echo "Erreur : " . $e->getMessage();
}
4. 🛠 Tutoriel pratique
Résumé du travail : Configurer PDO pour gérer les erreurs et tester un cas d’échec de requête.
Étape 1 : Configurer la connexion
Dans connexion.php
:
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=blogdb', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connexion réussie";
} catch (PDOException $e) {
echo "Erreur de connexion : " . $e->getMessage();
}
Étape 2 : Simuler une erreur de requête
try {
$pdo->query("SELECT * FROM table_inexistante");
} catch (PDOException $e) {
echo "Erreur SQL : " . $e->getMessage();
}
Étape 3 : Enregistrer les erreurs (optionnel)
Pour plus de sécurité, enregistrer l’erreur dans un fichier log plutôt que de l’afficher :
catch (PDOException $e) {
file_put_contents('erreurs.log', $e->getMessage(), FILE_APPEND);
echo "Une erreur est survenue. Contactez l'administrateur.";
}
5. 🧾 Résumé et points-clés
- try/catch permet de gérer les erreurs sans interrompre le programme.
PDO::ATTR_ERRMODE
définit comment PDO réagit aux erreurs (mode exception recommandé).- Pour la sécurité, ne jamais afficher les messages d’erreurs complets en production.
- Les logs sont essentiels pour diagnostiquer les problèmes.