Détection et gestion des avertissements PHP à l'aide de techniques de gestion des erreurs
En PHP, les avertissements ne sont pas traités comme des exceptions, ce qui présente des défis lorsqu'ils nécessitent une gestion spécifique avertissements de fonctions natives telles que dns_get_record qui déclenchent des avertissements en cas de requêtes DNS infructueuses.
Pour résoudre ce problème, deux approches principales exister :
1. Définition et restauration du gestionnaire d'erreurs :
Une méthode consiste à définir temporairement un gestionnaire d'erreurs personnalisé à l'aide de set_error_handler() avant d'exécuter le code susceptible de générer des avertissements. Après l'appel, le gestionnaire d'erreurs d'origine peut être restauré à l'aide de restaurer_error_handler(). Cela permet d'ignorer ou de consigner des erreurs spécifiques, comme démontré ci-dessous :
set_error_handler(function() { /* ignore errors */ }); dns_get_record(); restore_error_handler();
2. Conversion des erreurs en exceptions :
En utilisant set_error_handler() en conjonction avec la classe ErrorException, il est possible de convertir les erreurs PHP en exceptions. Cela permet la gestion des erreurs à l'aide de blocs try-catch :
set_error_handler(function($errno, $errstr, $errfile, $errline) { if (0 === error_reporting()) { return false; } throw new ErrorException($errstr, 0, $errno, $errfile, $errline); }); try { dns_get_record(); } catch (ErrorException $e) { // ... }
Suppression ou gestion des erreurs :
Bien qu'il soit tentant de supprimer l'avertissement à l'aide de l'opérateur @, il est généralement déconseillé car les erreurs et les avertissements existent pour une raison et doivent être traités plutôt que supprimés.
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!