[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с исключениями и trigger_error
Страницы: 1, 2, 3, 4
twin
Цитата (chee @ 31.10.2015 - 18:22)
Вообще хватит прикрываться "тупыми новичками", это не довод ни разу.

Как ты сразу объявил новичков тупыми. Они вовсе не тупые, у них пока недостаточно знаний.

И я ими не прикрываюсь, ты не так понял. Я пытаюсь сделать фреймворк для них. Тоесть я должен предвидеть, что они подумают и как отреагируют на ту или иную ситуацию.

Дело в том, что PHP - очень демократичный язык. Потому и безумно популярен. И совсем необязательно заканчивать университетов, чтобы суметь написать на нем пару домашних страниц. Очень много, катастрофически много, таких, кто учится сам, один. Без консультантов и помошников. И ексепшены для них, это что-то запредельное.

Давай из жизни пример. Человек решил научиться водить машину. С чего ему начать? С умения жать на тормоз левой ногой и управляемых заносов? Он должен сначала просто научиться тронуться с места. Оптимальным для него решением будет коробка-автомат, которая сама решает, в какой момент начать движение, как не сильно затормозить передачей, чтобы лоб не расшибить. А вот когда он научится мало-мальски крутить руль и не сшибать пешеходов, тогда и самое время подумать о виртуозном вождении.

В случае с эксепшенами получается наоборот. Чистая механика. Не умеешь плавно отпускать сцепление (читай: обрабатывать исключения), при попытке тронуться либо мотор заглохнет, либо лбом в лобовуху.

Цитата (chee @ 31.10.2015 - 18:22)
Нахрена это делать, приведи случай такого кейса, желательно реальный.
Далеко за примером бегать не нужно. Вот, в этой же ветке (надеюсь Arh не обидится smile.gif )
Человек написал целую CMS, причем не просто так, три строчки. Там претензия на ООП, по крайней мере классы используются. А как работать с исключениями толком не знает. Вот тебе и кейс. Ты просто либо забыл, как сам был новичком, либо никогда им небыл, а сразу учился у профессионалов. Не у всех есть такая возможность.

Поэтому мне и нужно нативное поведение фреймворка. Не должен он делать ничего сверх того, что делает чистый PHP. Это в идеале. По крайней мере у меня такая цель: минимизировать различия синтаксисов и поведений.

Так что мне обязательно нужно, чтобы из коробки (без настроек) фреймворк не бросал исключений. Но на ошибки реагировал. Потому и нужно, чтобы он умел преобразовывать одно в другое. Научится человек немного ездить, можно и к дрифту приступать, переключив всего одну единственную настройку. Но начать он должен вовсе не с эксепшенов.

Вот я и спросил, как преобразовать одно в другое. Триггер в ексепшены преобразовывается легко. Наоборот у меня не вышло. Может квалификации не хватило. wink.gif

Цитата (chee @ 31.10.2015 - 18:22)
Я не фига не понял, переформулируй. Что подразумевается под пользователем? Что в себя включает анализ?
Юзер в данном случае - программист, пользующийся фреймворком. Анализ - разбор его действий. Допустим он в своем приложении допустил плавающий баг. То же деление на ноль без валидации. И задает вопрос - какого хрена у меня посетители жалуются, что часто вылетает 500. Нужно в логи смотреть, а как иначе. Но если это ексепшен, причем отловленный, но лог не реализован, куда смотреть? Вот сделал он в своем catch красивую 500, как у Santehnick, а логирование не сделал. Я писал выше почему, не до того ему сейчас. Куда будем смотреть? Наследование это хорошо конечно, у меня так и сделано. Можно в него засунуть trigger_error с собачкой, но для чего? Все равно это не решает других проблем. И не дает возможности использовать нативные возможности PHP.

Razzwan, очень увлекательное чтиво. Я читал и сердце наполнялось радостью. Неужели хоть кто-то меня понял. А последняя фраза просто как обухом по голове. Это оказывается для меня! ohmy.gif

Ты долго отсутствовал и пропустил много интересного. Все это я уже неоднократно тут повторял. Что ошибка, это не исключение. Вот хотя бы тут.
Цитата (Razzwan @ 31.10.2015 - 21:12)
Это делают разработчики, чтоб проще было ИСПРАВЛЯТЬ ошибки во время кодирования. На работающем сайте все сообщения об ошибках, которые генерирует встроенный обработчик ДОЛЖНЫ БЫТЬ ВЫКЛЮЧЕНЫ. Для пользователя на сайте НЕТ ошибок. Ошибки есть ТОЛЬКО ДЛЯ РАЗРАБОТЧИКА. Для пользователя на сайте есть только ИСКЛЮЧЕНИЯ. Т.е. запланированные реакции скрипта на возникшую ситуацию.
Все это верно. Выключен должен быть не обработчик. А вывод отчетов в поток. С одновременным логированием и генерацией 500. А логированием ексепшенов должен заниматься пользователь фреймворка. А я вот что-то не припомню, чтобы ты в своих видеокурсах начинал учить людей с этого. biggrin.gif

Так что не по адресу претензия в непонимании. Если ты, написав такой трактат, сделал вывод, что я поступаю неверно, значит просто сам пока ничего не понял.

Ну и отвлеченно. Самое смешное в этой ситуации то, что с trigger_error возможны совершенно различные настройки. Как error_reporting(), так и опциями фреймворка. Я могу по разному реагировать на него. Там 5 настроек, в отличии от ексепшенов. Я могу сделать исключениями всё. Могу только E_USER_ERROR, могу E_USER_WARNING, могу отфильтровать E_NOTICE, могу скомбинировать их. Что я могу с ексепшенами? Только слезно умолять пользователя фреймворка досконально изучить ексепшены. sad.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.