Définir et restaurer le gestionnaire d'erreurs
Une possibilité consiste à définir votre propre gestionnaire d'erreurs avant l'appel et à restaurer le gestionnaire d'erreurs précédent ultérieurement avec restore_error_handler()
.
set_error_handler(function() { /* ignore errors */ });
dns_get_record();
restore_error_handler();
Vous pouvez construire sur cette idée et écrire un gestionnaire d'erreurs réutilisable qui enregistre les erreurs pour vous.
set_error_handler([$logger, 'onSilencedError']);
dns_get_record();
restore_error_handler();
Transformer les erreurs en exceptions
Vous pouvez utiliser set_error_handler()
et la ErrorException
classe pour transformer toutes les erreurs php en exceptions.
set_error_handler(function($errno, $errstr, $errfile, $errline, $errcontext) {
// error was suppressed with the @-operator
if (0 === error_reporting()) {
return false;
}
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});
try {
dns_get_record();
} catch (ErrorException $e) {
// ...
}
La chose importante à noter lors de l'utilisation de votre propre gestionnaire d'erreurs est qu'il contournera le error_reporting
paramètre et transmettra toutes les erreurs (notifications, avertissements, etc.) à votre gestionnaire d'erreurs. Vous pouvez définir un deuxième argument set_error_handler()
pour définir les types d'erreur que vous souhaitez recevoir ou accéder au paramètre actuel à l'aide ... = error_reporting()
du gestionnaire d'erreurs.
Supprimer l'avertissement
Une autre possibilité consiste à supprimer l'appel avec l'opérateur @ et à vérifier ensuite la valeur de retour dns_get_record()
. Mais je déconseille cela car les erreurs / avertissements sont déclenchés pour être traités, et non supprimés.