Bir uyarı yakalamak/deneyebilir miyim?
Bazı uyarılar bazı yerli php fonksiyonları atılan yakalamak ve onları idare etmen gerek.
Özellikle:
array dns_get_record ( string $hostname [, int $type= DNS_ANY [, array &$authns [, array &$addtl ]]] )
DNS sorgusu başarısız olduğunda bir uyarı atar.
try
/catch
bir uyarı, bir özel durum olmadığı için çalışmıyor.
Ben şimdi 2 seçeneğiniz var:
set_error_handler
sayfa (bu doğru mu?) her uyarı filtre kullanmak zorundayım çünkü overkill gibi görünüyor;Hata bildirimi/Bu uyarılar ekrana yankılandı alamadım, ekranı, dönüş değeri kontrol edin ve ayarlayın;
false
, eğer hiçbir kayıt hostname için bulundu.
En iyi uygulama nedir?
CEVAP
Set ve hata iÅŸleyicisi geri
Bir ihtimal aramadan önce kendi hata işleyicisi ayarlamak ve önceki hata işleyicisi restore_error_handler()
daha sonra geri yüklemek için.
set_error_handler(function() { /* ignore errors */ });
dns_get_record();
restore_error_handler();
Bu fikir üzerine inşa etmek ve sizin için hata günlükleri yeniden kullanılabilir hata işleyicisi yazabilirsiniz.
set_error_handler([$logger, 'onSilencedError']);
dns_get_record();
restore_error_handler();
İstisnalar içine hataları dönüm
İstisnalar içine tüm php hatalarını kapatmak için set_error_handler()
ErrorException
sınıfını kullanabilirsiniz.
set_error_handler(function($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) {
// ...
}
Kendi hata işleyicisi kullanarak not için önemli şey error_reporting
ayarı bypass ve tüm hataları (ilan, vb. uyarılar) geçecek. hata işleyicisi. set_error_handler()
ikinci bir argüman almak istediğiniz tanımlamak veya mevcut ayarı hata işleyicisi içinde ... = error_reporting()
kullanarak eriÅŸim saÄŸlayabilirsiniz.
Uyarı engelleniyor
Başka bir olasılık @ operatörü ile çağrı bastırmak ve dns_get_record()
dönüş değeri sonradan kontrol etmektir.Ama bunu yapmamanı tavsiye ederimhatalar/uyarılar olarak ele alınması, bastırılması değil tetiklenir.
Nasıl uyarı ile javascript dizi yapısı...
Nasıl Android bir Uyarı İletişim için ...
Nasıl perl yerel bir uyarı yapabilir m...
Nasıl Android bir Uyarı İletişim kutus...
Git repo nasıl bir dosyayı silebilir m...