Establecer y restaurar el controlador de errores
Una posibilidad es establecer su propio manejador de errores antes de la llamada y restaurar el anterior controlador de error después con restore_error_handler()
.
set_error_handler(function() { /* ignore errors */ });
dns_get_record();
restore_error_handler();
Usted podría basarse en esta idea y escribir una re-utilizable controlador de error que registra los errores de usted.
set_error_handler([$logger, 'onSilencedError']);
dns_get_record();
restore_error_handler();
Giro de errores en las excepciones
Usted puede utilizar set_error_handler()
y a las ErrorException
clase a su vez todos los errores de php en excepciones.
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 cosa importante a tener en cuenta al usar su propio manejador de errores es que se pasará por alto el error_reporting
ajuste y pasar todos los errores (avisos, advertencias, etc.) para su controlador de error. Usted puede establecer un segundo argumento en set_error_handler()
definir que tipos de error que desea recibir, o acceder a la configuración actual utilizando ... = error_reporting()
dentro del manejador de errores.
La supresión de la advertencia
Otra posibilidad es la de suprimir la llamada con el operador @ y comprobar el valor de retorno dns_get_record()
después. Pero le advierto que esta como a errores/advertencias se activan para ser manejado, a no ser suprimida.