Définir et restaurer gestionnaire d'erreur
Une possibilité est de définir votre propre gestionnaire d'erreur avant l'appel et de rétablir le précédent gestionnaire d'erreur plus tard 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 une ré-utilisable gestionnaire d'erreur, qui enregistre les erreurs pour vous.
set_error_handler([$logger, 'onSilencedError']);
dns_get_record();
restore_error_handler();
Tournant les erreurs dans les exceptions
Vous pouvez utiliser set_error_handler()
et de la ErrorException
classe de tourner toutes les erreurs php dans les exceptions.
set_error_handler(function handleError($errno, $errstr, $errfile, $errline, array $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'erreur est qu'il ignore l' error_reporting
réglage et passer toutes les erreurs (les avertissements, mises en garde, etc.) à votre gestionnaire d'erreur. Vous pouvez définir un deuxième argument en faveur de set_error_handler()
pour définir les types d'erreur que vous souhaitez recevoir, ou d'accéder au réglage du courant à l'aide d' ... = error_reporting()
à l'intérieur du gestionnaire d'erreur.
La suppression de l'avertissement
Une autre possibilité est de supprimer l'appel avec l'opérateur @ et vérifier la valeur de retour de l' dns_get_record()
par la suite. Mais je vous le déconseille ce que les erreurs/alertes sont déclenchées à être manipulés, de ne pas être supprimé.