我使用一些PHP手冊的代碼來進行異常測試,但得到一些奇怪的消息。php引發異常被捕獲,但仍然出現錯誤消息
這裏是代碼:
function inverse($x) {
if (!$x) {
throw new Exception('Division by zero.');
}
else return 1/$x;
}
try {
echo inverse(5) . "\n";
echo inverse(0) . "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo 'Hello World';
這裏是輸出:
0.2
(!) Exception: Division by zero. in /var/www/OOPlearing/slash.php on line 10Call Stack#TimeMemoryFunctionLocation10.0002330188{main}()../slash.php:020.0002330232inverse($x = 0)../slash.php:17Dump $_SERVER$_SERVER['HTTP_HOST'] =string 'localhost' (length=9)$_SERVER['SERVER_NAME'] =string 'localhost' (length=9)Dump $_GETVariables in local scope (#2)$x =int 0
Caught exception: Division by zero.Hello World
這是奇怪的是,雖然異常被抓住了,但異常消息仍然在...
我在php.ini中的一些本地設置:
error_reporting = E_ALL & ~E_DEPRECATED
display_errors =On
display_startup_errors = Off
log_errors = Off
......
html_errors = On
我的筆記本電腦:
ubuntu11.04
mysql Ver 14.14 Distrib 5.1.54
PHP 5.3.5-1
更新(2012年1月16日)這是Xdebug擴展,導致這樣的錯誤outputs.The Xdebug的默認顯示堆棧跟蹤誤差conditions.For誰想要禁用它可以下面做說明:
xdebug_disable();//put it on the header of your code,like cofig file.
做喲你嘗試設置'display_errors'關閉? – jere 2012-01-12 12:23:27
錯誤報告的轉向不是問題的解決方案;) – rkosegi 2012-01-12 12:25:37
我複製粘貼你的代碼,它只顯示 0。2 遇到異常:除以零。 Hello World。 所以沒問題 – rkosegi 2012-01-12 12:28:25