2010-03-27 19 views
5

Çalışma sırasında kodumun bir Uyarı attığını nasıl bilebilirim? benim kod üzerinde işleyemez hata: "Sıfıra Bölümü Uyarı"işlenmemiş hatalar php içinde

örnek

try { 
    echo (25/0); 
} catch (exception $exc) { 
    echo "exception catched"; 
} 

bir atar.

cevap

7

Set_error_handler() işlevini arıyorsunuz. http://ch.php.net/set_error_handler Kılavuzdaki örnek koduna bakın.

Hata uyarılarını yalnızca bastırmayacağınızdan, bunun yerine bunları bir günlük dosyasına veya benzer bir şeye sessizce yönlendirdiğinizden emin olun. follows.e.g

function inverse($x) 
{ 
    if(!$x) 
    { 
     throw new Exception('Division by zero.'); 
    } 
    else 
    { 
     return 1/$x; 
    } 
} 


try 
{ 
    echo inverse(5); 
    echo inverse(0); 
} 
catch (Exception $e) 
{ 
    echo $e->getMessage(); 
} 
+0

Svens'in söylediklerinin giderilmesinde, tüm hataların kapatılmasına yönelik hata bastırma işlemi "error_reporting (0)" ile yapılmıştır. Bkz. Http://us.php.net/manual/en/errorfunc.configuration. php # ini.error-raporlama –

+0

.. veya komut için bir '@' hazırlayarak. Btw. error_reporting sıfıra (errno = 0 ile) ayarlandığında hata işleyici de çağrılır. Hata işleyici çok kullanışlı ve zaman, parametreler, bellek kullanımı, vb son giriş gibi şeyler yapmak ve yönetici bildirmek için kullanılabilir (ölümcül hatalar için). Bastırma hatalarını tavsiye etmeyi istemiyorum :). – svens

5

(Bu hataların izini yardımcı olur). Bkz. Bir here

+0

istisnaların nasıl çalıştığını tamamen yanlış anladınız – user187291

+0

@ stereofrog, not için teşekkürler. Açıklığa kavuşturmaya çalışıyorum. – Young

+0

istisnaların amacı, sizin yaptığınız gibi, hataların gerçekleşmesini "önlemek" değil, ancak bunların gerçekleşmesi için bir yol sağlamaktır. Yine de denemek için +1. – user187291

2

Sen istisnalarıyla eski tarz php "hataları" dönüştüren bir hata işleyicisi yüklemeniz gerekir gibi istisna Kendini ele gerekir