Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Нужны PHP 5.x ошибки в виде Exception


Автор: slogic 30.9.2008, 18:58
Мне нужна система на базе исключений. То, что делает PHP очень не нравится, потому что мне надо чтобы после ошибки (будь это ошибка уровня ERROR или NOTICE, т.е. в зависимости от error_reporting) контекст возвращался к месту, где я ловлю исключения. PHP использую 5.2.x. Кто может что посоветовать? Пока приходит в голову одна плохая идея. В контексте, где ошибки PHP не должны прерывать работу скрипта в целом, а возбуждаться в виде исключений, я создаю свой обработчик ошибок и навешиваю его (set_error_handler), а потом из него выбрасываю исключение. Но таких мест может быть очень много.

Автор: skyboy 30.9.2008, 23:26
Цитата(slogic @  30.9.2008,  17:58 Найти цитируемый пост)
set_error_handler

не перехватывает ошибки уровня E_ERROR и выше(всякие там E_FATAL_ERROR и E_CORE_ERROR или как там её)

Автор: slogic 1.10.2008, 02:27
Так-с, пока нарыл вот это: http://forum.dklab.ru/viewtopic.php?p=146438

ЗЫ. И еще тут: http://habrahabr.ru/blogs/php/30399/

Короче сводится к тому, до чего я сам догадался. Хотя использование Exceptionizer.php сильно облегчило задачу.

Жалко что нет встроенного "переключателя" в самом PHP 5.x, устанавливаемого, например, через ini_set().

А вот с невозможностью перехвата E_ERROR придется мириться.

Можете закрыть тему.

Автор: MoLeX 1.10.2008, 05:22
slogic, если решил тему то помечай ее соответсвенным образом

Автор: sTa1kEr 1.10.2008, 08:33
Цитата(slogic @  1.10.2008,  03:27 Найти цитируемый пост)
Хотя использование Exceptionizer.php сильно облегчило задачу.

Непонимаю, зачам такие велосипеды? Чем не подходит родной PHP метод с родным исключением от сюда http://php.net/ErrorException ?

Цитата(slogic @  1.10.2008,  03:27 Найти цитируемый пост)
Жалко что нет встроенного "переключателя" в самом PHP 5.x, устанавливаемого, например, через ini_set().

Нету смысла для двух строчек кода создавать отдельный параметр в настройках.

Цитата(slogic @  1.10.2008,  03:27 Найти цитируемый пост)
А вот с невозможностью перехвата E_ERROR придется мириться.

Все ошибки уровня E_ERROR и выше (в т.ч. E_PARSE, etc) можно перехватить по методу Котерова через ob handler, но исключительно для того, что бы выдать осмысленный текст ошибки и/или формировать какую-либо отладочную информацию. К примеру, я использую этот метод для того, что бы при генерации любой ошибки была собрана отладочная информации и отправлена на консоль/FireBug/консоль на JavaScript и пр.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)