2014-05-15 62 views
1

我有這樣的代碼PHP抓不住例外

try 
    { 
     $a = 1/0; 
    } 
    catch(Exception $ex) 
    { 
     echo($ex->getMessage()); 
    } 

當我執行網頁(與WAMP服務器2.2)。我看到this並沒有例外的文字。我究竟做錯了什麼?謝謝。

+5

這不是例外 – PeeHaa

+2

除零是一個'warning',而不是一個'exception' –

+0

請參閱這裏以查看PHP例外列表:http://www.php.net/manual/en/spl.exceptions。 php – WillardSolutions

回答

0

要處理這種情況,您需要將PHP錯誤轉換爲異常。沿(PHP 5.3+)線的東西:

set_error_handler(
    function ($code, $mesg) { 
     throw new RuntimeException($mesg, $code); 
    }, 
    E_ALL & ~E_NOTICE & ~E_USER_NOTICE 
); 

try { 
    $a = 1/0; 
} catch (Exception $ex) { 
    die($ex->getMessage()); 
} 

(買者自負:不要靠近我的終端,沒有編譯這個例子。)

如果你想提高基於特定不同的異常錯誤,那麼你所能做的最好的就是根據你感興趣的模式測試消息,然後相應地提高。

+0

它工作正常,但在哪裏我必須把set_error_handler方法? –

+0

@JosePersichini:在你開始做任何事情之前,你的代碼開始。所以,如果你有index.php調用了一堆東西,把'set_error_handler'放在index.php的頂部。 – bishop

+0

並且需要我將這個方法放在所有帶有用戶界面的php文件中? –