На моей сборке XAMPP / Win XP PHP5.2.3 не удается поймать какие-либо исключения. Ни один из примеров не работает, и это:
try { throw new Exception('Fail'); } catch (Exception $e) { echo 'Succeed'; }
… результаты:
Неустранимая ошибка : исключить исключение «Исключение» с сообщением «Fail» в M: \ path \ to \ test.php: 4 Трассировка стека: # 0 {main} выбрано в M: \ path \ to \ test.php в строке 4
Все настройки ошибок PHP кажутся стандартными. Сервер Apache / 2.2.4
Это зависит от сборки 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.
Я получаю «Succeed» как вывод, выполняющий ваш скрипт, как автономный в командной строке, так и через apache на веб-сервере, а также в XAMPPLITE. Dunno, что отличается от вашей настройки