2013-02-05 59 views
2

我有一個很奇怪的情況:下面顯示的代碼在PHP中應該不會輸出錯誤。無論如何在try&catch塊中顯示PHP異常

try { 
    throw new Exception('foo'); 
} catch(Exception $e) { 
    // here could be some custom functions to handle errors 
    die(); 
} 

在我的電腦打印

(!) SCREAM: Error suppression ignored for 
(!) Exception: foo. in D:\wamp\www\index.php on line 4 

爲什麼?哪個php ini選項可以實現這一點?

+1

的error_reporting,的display_errors? –

+0

我想顯示我的錯誤,我不想將_display_errors_設置爲_off_。這個簡單的代碼塊以前沒有打印任何錯誤,而代碼'$ e = 5/0;'確實打印了一個錯誤(如果只是它在try&catch塊中不存在) – jtompl

+0

好吧,將display_errors設置爲on並將error_reporting設置爲E_ALL 。它會顯示所有錯誤。 –

回答

5

吶喊擴展是一個擴展面向開發人員,使他們獲得從他們的代碼中看到錯誤消息,即使他們通常會被抑制。

xDebug是另一個開發人員擴展程序,它也包含相同的功能。

如果您擁有這些擴展名中的任何一個,則可以在您的PHP配置中禁用Scream功能。

但無論這些擴展應該是在生產系統上使用 - 它們是用於開發人員的唯一的系統上使用。如果它在您的現場網站上,則應該完全禁用擴展。

1

謝謝大家的回答。是的,問題是xdebug,更準確:xdebug.show_exception_trace選項,它被轉換爲on

正如我們從xdebug documentation讀:

xdebug.show_exception_trace
類型:整數,默認值:0
當該設置被設置爲1,Xdebug的將顯示棧跟蹤每當產生一個異常 - 即使這個異常實際上被捕獲。