PHP: превращаем ошибку в исключение локально
20 февраля 2021
В PHP часто для обработки ошибки в функциях вроде dns_get_record() используют оператор @:
$result = @dns_get_record($hostname, DNS_A);
if (!$result) {
throw new \RuntimeException('Unable to get record.');
}Проблем несколько:
- Использование
@не очень хорошо сказывается на производительности - Часто подавляется слишком много разных ошибок.
Есть способ лучше:
set_error_handler(
static function (int $errorNumber, string $errorString) use ($hostname): ?bool {
throw new \RuntimeException(
sprintf('Unable to get record: "%s". ', $hostname) . $errorString,
$errorNumber
);
}
);
$result = dns_get_record($hostname, DNS_A);
restore_error_handler();


Комментарии RSS по email OK
$result = @dns_get_record($hostname, DNS_A); if (!$result) { $error = error_get_last ( ); throw new \RuntimeException($error['message']); }X Y Z, да, одну из проблем решает.