PHP hatalarını devre dışı

7 Cevap php

Nasıl sadece belli php fonksiyonu için hatalarını devre dışı bırakmak için, ve aynı zamanda hata oluştu bilmeli? Örneğin, ben bazen ne yapmak istiyorum hata oluştuğunda bir kez sonraki url ayrıştırmak için, bir hata verir ve ekranda (hata) göstermek için değil, URL'ler bir dizi ayrıştırmak için, bir php fonksiyon parse_url kullanın.

7 Cevap

bir işlevi önce @ sembolü hata mesajı ve parse_url () erroring false değerini döndürür böylece sadece yakalamak bastırır.

 if(@parse_url($url) === false) {
        //Error has been caught here
    }

@ Kötülüktür.

Bu kullanabilirsiniz:

try {
  // your code
} catch (Exception $e) {
  // a block that executed when the exception is raised
}

Eğer bir özel hata işleyicisi arıyor gibi geliyor

http://php.net/manual/en/function.set-error-handler.php

en iyi yolu burada özetlenen tekniği http://php.net/manual/en/class.errorexception.php kullanarak, istisnalar php "hataları" dönüştürmek ve daha sonra diğer dillerde yaptığınız gibi bir özel durum ele almaktır:

 function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
 }
 set_error_handler("exception_error_handler");


try {
   parse_url(...)
} catch(Exception $e) {

Bir @, bu nedenle kullanmadan @parse_url() gizlemek gerekir hata ile işlev çağrısı prefixing

Belirli bir ifadenin sessiz hataları, sadece @ ekleyin.

Örnek

$file = @file_get_contents($url);

$ Url bulundu değilken zaman file_get_contents hata atabilir.

Sessiz yerde herhangi bir açıklama @ işaretini kullanabilirsiniz. Gibi:

$i = @(5/0);