PHP:
Gestion des erreurs

Comment faire :

En PHP, vous pouvez gérer les erreurs à l’aide de blocs try-catch, et vous pouvez personnaliser le processus avec des gestionnaires d’erreur personnalisés et des exceptions.

// Exemple de base de try-catch
try {
  // Faire quelque chose de risqué
  $file = fopen("nonexistentfile.txt", "r");
} catch (Exception $e) {
  // Gérer l'erreur
  echo "Erreur : " . $e->getMessage();
}

// Définition d'un gestionnaire d'erreurs personnalisé
set_error_handler(function($severity, $message, $file, $line) {
  throw new ErrorException($message, 0, $severity, $file, $line);
});

// Utilisation des exceptions
class MyException extends Exception {}

try {
  // Faire quelque chose et lancer une exception personnalisée
  throw new MyException("Erreur personnalisée !");
} catch (MyException $e) {
  // Gérer l'exception personnalisée
  echo $e->getMessage();
}

// Sortie d'exemple :
// Erreur : fopen(nonexistentfile.txt): échec de l'ouverture du flux : Aucun fichier ou dossier de ce type
// Erreur personnalisée !

Plongée en profondeur

Autrefois, les erreurs PHP étaient plus des avertissements et des notices qui n’arrêtaient pas l’exécution du script. En mûrissant, le langage a adopté une gestion des erreurs orientée objet plus robuste via la classe Exception introduite dans PHP 5. Plus tard, PHP 7 est arrivé avec des classes Error qui ont enfin différencié les erreurs et les exceptions.

Avant les blocs try-catch, PHP utilisait set_error_handler() pour traiter les erreurs. try-catch est plus propre et plus moderne. Mais les gestionnaires d’erreurs personnalisés ont toujours leur place, en particulier pour le code existant ou lorsque vous avez besoin d’attraper ce qui serait normalement des erreurs non exceptionnelles.

L’interface Throwable dans PHP 7+ signifie que, qu’il s’agisse d’une Error ou d’une Exception, vous pouvez intercepter les deux. C’est pratique car vous ne manquez plus les erreurs d’exécution critiques, qui étaient plus difficiles à suivre auparavant.

Les alternatives en dehors des mécanismes intégrés de PHP incluent des bibliothèques et des frameworks qui viennent avec leurs propres systèmes de gestion des erreurs, offrant plus de fonctionnalités comme la journalisation des erreurs dans des fichiers ou l’affichage de pages d’erreur conviviales pour l’utilisateur.

Voir aussi