Установить и восстановить обработчик ошибок
Одна возможность состоит в том, чтобы установить свой собственный обработчик ошибок перед вызовом и восстановить предыдущий обработчик ошибок позже restore_error_handler()
.
set_error_handler(function() { /* ignore errors */ });
dns_get_record();
restore_error_handler();
Вы можете основываться на этой идее и написать повторно используемый обработчик ошибок, который регистрирует ошибки для вас.
set_error_handler([$logger, 'onSilencedError']);
dns_get_record();
restore_error_handler();
Превращение ошибок в исключения
Вы можете использовать set_error_handler()
и ErrorException
класс, чтобы превратить все ошибки PHP в исключения.
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) {
// ...
}
При использовании собственного обработчика ошибок важно помнить, что он обойдёт error_reporting
настройку и передаст все ошибки (уведомления, предупреждения и т. Д.) Вашему обработчику ошибок. Вы можете установить второй аргумент, set_error_handler()
чтобы определить, какие типы ошибок вы хотите получать, или получить доступ к текущим настройкам, используя ... = error_reporting()
обработчик ошибок.
Подавление предупреждения
Другая возможность - отменить вызов с помощью оператора @ и проверить возвращаемое значение dns_get_record()
впоследствии. Но я бы посоветовал против этого, так как ошибки / предупреждения инициируются для обработки, а не для подавления.