Исключение 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

Update(2012.1.16) Именно расширение xdebug привело к такому выводу ошибок. По умолчанию xdebug показывает трассировку стека при возникновении ошибок. Для тех, кто хочет отключить его, можно сделать следующую инструкцию:

xdebug_disable();//put it on the header of your code,like cofig file.

подробнее

5
задан Emanuele Del Grande 30 April 2018 в 18:52
поделиться