[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с исключениями и trigger_error
Страницы: 1, 2, 3, 4
twin
Для иерархий. Допустим разные метода в классе кидают разные исключения. Одно - что не верные аргументы, второе - что запрашивается не существующий функционал, и так далее. Их можно ловить каждое в своем обработчике и по разному реагировать. А просто есепшен информации для скрипта не несет. Только сообщение для программиста.

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

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

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

user posted image
Arh
Это чтобы наследник InvalidParam мог что то сделать? Или зачем, непонимаю чем это:
try {
$var = example(1);
} catch (InvalidParam $e) {
echo '<br>Реагируем';
}


отличается от этого:
try {
$var = example(1);
} catch (Exception $e) {
echo '<br>Реагируем';
}


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Ну так в мануал то сходи. smile.gif

Блоков catch может быть несколько на один try И каждый на свое исключение.

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

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

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

user posted image
Arh
Ок, завтра со свежей головой =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
AllesKlar
twin
Santehnick
Не о том спорите, тупо меряетесь письками.

Я приверженец исключений и вот почему (а не "ховно там кто-то написал"):
Мне удобнее писать, так же как и читать, последовательный код, "подразумевающий" отсутствие ошибок в вышестоящих операциях.

try {
... // много кода на доверии без проверок
}
catch( ExceptionTyp_1 $e) {
}

catch( ExceptionTyp_2 $e) {
}

.....
catch( ExceptionTyp_n $e) {
}



В варианте же twin весь "продуктивный" код будет перемешан с кучей if...else блоков
Ну а залогировать исключение или нет, это дело программиста, и автоматическое НЕлогирование исключений это сделано, на мой взгляд разработчиками специально.
Исключение можно кинуть не только ведь для ошибки, а и для ветвления логики. И к чему мне тут логирование?

Вот у меня одно приложение, работающее на двух разных базах. У одной базы расширили таблицу, у второй еще нет. В очереди на обновление стоит еще 52 клиента :) Мне не нужно логирование SQLException, мне нужна другая логика при этом исключении.
несомненно, можно полезть в системные таблицы, перечитать оттуда структуру пользовательских таблиц.. но это дофига лишего кода.

Вот один из очень важных клиентов, который захотел логировать все и вся...
user posted image
ГИГАБАЙТ логов за месяц!!!
Да кто там в этом копаться будет???

_____________
[продано копирайтерам]
chee
Цитата (AllesKlar @ 29.10.2015 - 23:29)
Да кто там в этом копаться будет???

Твин laugh.gif

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
В очередной раз убеждаюсь, какие же однобокие все таки вы, оопэшники biggrin.gif

Один тыркал меня иерархиями, а сам ими не пользуется, делает catch на каждый вызов. Чем это лучше if я так и не понял. Второй на доверии привык, пользутся ими слепо веря в свои силы и во всемогущество фреймворка. А значит все так же должны делать.

Даже между собой договориться не могут, как лучше.

Я сто раз повторил, что мой подход дает свободу выбора. Ну нравится AllesKlar на доверии - включи режим еxeption, и радуйся жизни. Равно как и Santehnick может сделать тоже самое.

А если кому то не нравится? Не хочет человек или не умеет? Вот допустим Arh уже несколько лет как написал свою CMS, а исключениями не пользуется. Почему вы решили, что все родились с эксепшеном в руке? Я пишу фреймворк для новичков, учебно-тренировочный. И опциональность там важна. А вы погрязли и заскорузли в своих привычках. Считаете что так, и только так это хорошо.

Вот если человек не станет оборачивать контекст в try... catch, скажите мне, что будет при вашей схеме? А вот что будет:
Цитата
Fatal error: Uncaught exception
Причем без без вариантов! Вы не даете никаких шансов, только ловить и обрабатывать ошибки.
А их не обробатывать надо, их надо исправлять.

А как же их исправить, коли ничего о них не известно? Что вы сделаете в этом catch полезного, если пользователь допустит ошибку? Вывалите 500 или 404? Сделаете оповещение админу на мыло? Тогда не логи гигабайтные будут, а почта. biggrin.gif biggrin.gif biggrin.gif

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

Вот покажите мне реальный ваш обработчик ошибок на ексепшенах. Именно ошибок, не исключительных ситуаций.

У меня вариантов масса. Такая схема позволяет просто переключить настройку и не плакать. Причем одним всего движением.

Вы упорно не хотите заметить того, что по моей схеме можно работать и как вы привыкли, и совсем по другому, как привык Arh. Она дает свободу выбора.

А все потому, что вам привили однобокость и зашоренность. Безальтернативность. Зажатость в рамки. Вы люди несвободные, не способные на нестандартные решения. Вы панически боитесь отступить хоть на полшага от общепринятых правил. Это называется "стадное чувство".


Цитата (AllesKlar @ 29.10.2015 - 19:29)
Ну а залогировать исключение или нет, это дело программиста, и автоматическое НЕлогирование исключений это сделано, на мой взгляд разработчиками специально.
Исключение можно кинуть не только ведь для ошибки, а и для ветвления логики. И к чему мне тут логирование?

Именно! Именно исключений. Ни кто не запретил использовать их в моей схеме совместно с trigger_error. Они очень славно уживаются, не мешая друг другу. Только триггер нужно использовать там, где возможна именно ошибка. При которой дальнейшая работа скрипта может привести к плачевным результатам. И которую нужно как можно скорее исправить. А для этого как можно скорее выловить. А как это сделать, если нихрена не логируется?

А там, где именно исключительная ситуация, свободно можно кинуть и эксепшен.

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

Цитата (AllesKlar @ 29.10.2015 - 19:29)
Вот один из очень важных клиентов, который захотел логировать все и вся...
Желание клиента - закон! Особенно если он очень важный. smile.gif
Цитата (AllesKlar @ 29.10.2015 - 19:29)
ГИГАБАЙТ логов за месяц!!!
Да кто там в этом копаться будет???

Какая тебе разница кто. Ему надо - дай. Не твое дело зачем. Тебе не надо, ни кто пока не отменил error_reporting.

Все таки скучно с вами. Все строем ходить норовите. smile.gif

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

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

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

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

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