Establecer y restaurar el controlador de errores
Una posibilidad es configurar su propio controlador de errores antes de la llamada y restaurar el controlador de errores anterior más adelante con restore_error_handler()
.
set_error_handler(function() { /* ignore errors */ });
dns_get_record();
restore_error_handler();
Podría aprovechar esta idea y escribir un controlador de errores reutilizable que registre los errores por usted.
set_error_handler([$logger, 'onSilencedError']);
dns_get_record();
restore_error_handler();
Convertir errores en excepciones
Puede usar set_error_handler()
y la ErrorException
clase para convertir todos los errores de php en excepciones.
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) {
// ...
}
Lo importante a tener en cuenta al usar su propio controlador de errores es que omitirá la error_reporting
configuración y pasará todos los errores (avisos, advertencias, etc.) a su controlador de errores. Puede establecer un segundo argumento set_error_handler()
para definir qué tipos de error desea recibir o acceder a la configuración actual utilizando ... = error_reporting()
el controlador de errores.
Suprimiendo la advertencia
Otra posibilidad es suprimir la llamada con el operador @ y verificar el valor de retorno de dns_get_record()
después. Pero desaconsejaría esto, ya que los errores / advertencias se activan para ser manejados, no para ser suprimidos.