PHP5: Почему try / catch не работает? - PullRequest
1 голос
/ 28 марта 2009

В моей сборке XAMPP / Win XP PHP5.2.3 не может перехватить какие-либо исключения. Ни один из примеров не работает, а это:

try {
    throw new Exception('Fail');
} catch (Exception $e) {
    echo 'Succeed';
}

... приводит к:

Неустранимая ошибка : необработанное исключение «Исключение» с сообщением «Ошибка» в M: \ path \ to \ test.php: 4 Трассировка стека: # 0 {main} добавляется в M: \ path \ to \ test.php на линии 4

Все настройки ошибок PHP кажутся стандартными. Сервер Apache / 2.2.4

Ответы [ 2 ]

5 голосов
/ 28 марта 2009

Это зависит от сборки eAccelerator в XAMPP. В какой-то момент у него возникли проблемы с оптимизацией операторов try / catch , и он просто проигнорировал их.

Проблема была в 0.9.5. В настоящее время XAMPP связан с eAccelerator 0.9.5.3, хотя по умолчанию он отключен. Так что это может и не быть вашей проблемой.

Согласно ChangeLog , XAMPP не использовал PHP 5.2.3 и Apache 2.2.4 в течение ДЛИТЕЛЬНОГО времени, что также примерно во время ошибки eAccelerator. Я рекомендую проверить вашу версию eAccelerator и, возможно, обновить XAMPP.

0 голосов
/ 28 марта 2009

Я получаю "Succeed" как вывод, выполняющий ваш скрипт, как автономный в командной строке и через apache на веб-сервере, так и в XAMPPLITE. Не знаю, что отличается от вашей настройки

...