В PHP 5.4 мой код не работает должным образом. Я использую кириллицу. Короче:
throw new Exception('Сообщение');
будет выводить:
Фатальная ошибка: в test.php …
хотя результатом будет:
Неустранимая ошибка: необработанное исключение «Исключение» с сообщением …
Если я не использую символы кириллицы, результат будет ОК. Более того, если я выполню этот код в 5.3, я получу правильный результат. И. е. если я использую кириллицу, результатом будет пустая строка.
Есть сообщения о проблемах с не UTF-8 символов в исключениях. Попробуйте преобразовать сообщение в utf-8 примерно так:
throw new Exception(utf8_encode('Сообщение'));
если это не работает, попробуйте следующее:
$message = 'Сообщение';
$message = mb_convert_encoding($message, 'Windows-1251', 'UTF-8');
throw new Exception($message);
— РЕДАКТИРОВАТЬ —
Проблема не в том, что сообщение об исключении не сохраняется, а в том, что исключение не отображается должным образом. В PHP 5.3 xdebug не включен по умолчанию, а в PHP 5.4 это так. xdebug настроен на отображение всего в UTF-8, и ваше сообщение, вероятно, закодировано в какой-то другой кодировке, поэтому сообщение не отображается правильно.
Если вы прокрутите вниз этот странице, вы найдете один комментарий, касающийся этой проблемы.
PHP сами отслеживали эту проблему на Вот
Этот поток также связано с той же проблемой.
Вы могли бы уйти, установив кодировку xdebug на кодировку не utf-8. пожалуйста прочитайте руководство по xdebug относительно этого
Других решений пока нет …