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, да, одну из проблем решает.