Hata işleyiciyi ayarlama ve geri yükleme
Bir olasılık, aramadan önce kendi hata işleyicinizi ayarlamak ve daha sonra önceki hata işleyiciyi geri yüklemektir restore_error_handler()
.
set_error_handler(function() { /* ignore errors */ });
dns_get_record();
restore_error_handler();
Bu fikir üzerine inşa edilebilir ve hataları sizin için kaydeden yeniden kullanılabilir bir hata işleyici yazabilirsiniz.
set_error_handler([$logger, 'onSilencedError']);
dns_get_record();
restore_error_handler();
Hataları istisnalara dönüştürme
Tüm php hatalarını istisnalara dönüştürmek için set_error_handler()
ve ErrorException
sınıfını kullanabilirsiniz .
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) {
// ...
}
Kendi hata işleyicinizi kullanırken dikkat etmeniz gereken önemli şey, error_reporting
ayarın atlanıp tüm hataları (bildirimler, uyarılar vb.) Hata işleyicinize iletmesidir. set_error_handler()
Hangi hata türlerini almak istediğinizi tanımlamak için ikinci bir argüman ayarlayabilir veya ... = error_reporting()
hata işleyicinin içinde kullanarak geçerli ayara erişebilirsiniz .
Uyarının bastırılması
Başka bir olasılık da @ operatörü ile çağrıyı bastırmak ve dns_get_record()
daha sonra dönüş değerini kontrol etmektir . Ancak , hataların / uyarıların bastırılması için değil, tetiklenmesi için tetiklendiği için buna karşı öneriyorum .