Для иерархий. Допустим разные метода в классе кидают разные исключения. Одно - что не верные аргументы, второе - что запрашивается не существующий функционал, и так далее. Их можно ловить каждое в своем обработчике и по разному реагировать. А просто есепшен информации для скрипта не несет. Только сообщение для программиста.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Это чтобы наследник 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
Ну так в мануал то сходи.
Блоков catch может быть несколько на один try И каждый на свое исключение.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Ок, завтра со свежей головой =)
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
AllesKlar
29.10.2015 - 23:29
twinSantehnickНе о том спорите, тупо меряетесь письками.
Я приверженец исключений
и вот почему (а не "ховно там кто-то написал"):
Мне удобнее писать, так же как и читать, последовательный код, "подразумевающий" отсутствие ошибок в вышестоящих операциях.
try {
...
}
catch( ExceptionTyp_1 $e) {
}
catch( ExceptionTyp_2 $e) {
}
.....
catch( ExceptionTyp_n $e) {
}
В варианте же
twin весь "продуктивный" код будет перемешан с кучей if...else блоков
Ну а залогировать исключение или нет, это дело программиста, и автоматическое НЕлогирование исключений это сделано, на мой взгляд разработчиками специально.
Исключение можно кинуть не только ведь для ошибки, а и для ветвления логики. И к чему мне тут логирование?
Вот у меня одно приложение, работающее на двух разных базах. У одной базы расширили таблицу, у второй еще нет. В очереди на обновление стоит еще 52 клиента :) Мне не нужно логирование SQLException, мне нужна другая логика при этом исключении.
несомненно, можно полезть в системные таблицы, перечитать оттуда структуру пользовательских таблиц.. но это дофига лишего кода.
Вот один из очень важных клиентов, который захотел логировать все и вся...
![user posted image](http://images.vfl.ru/ii/1446151626/fe63b2fa/10330907.png)
ГИГАБАЙТ логов за месяц!!!
Да кто там в этом копаться будет???
_____________
[продано копирайтерам]
Цитата (AllesKlar @ 29.10.2015 - 23:29) |
Да кто там в этом копаться будет??? |
Твин
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
В очередной раз убеждаюсь, какие же однобокие все таки вы, оопэшники
Один тыркал меня иерархиями, а сам ими не пользуется, делает catch на каждый вызов. Чем это лучше if я так и не понял. Второй на доверии привык, пользутся ими слепо веря в свои силы и во всемогущество фреймворка. А значит все так же должны делать.
Даже между собой договориться не могут, как лучше.
Я сто раз повторил, что мой подход дает свободу выбора. Ну нравится
AllesKlar на доверии - включи режим еxeption, и радуйся жизни. Равно как и
Santehnick может сделать тоже самое.
А если кому то не нравится? Не хочет человек или не умеет? Вот допустим
Arh уже несколько лет как написал свою CMS, а исключениями не пользуется. Почему вы решили, что все родились с эксепшеном в руке? Я пишу фреймворк для новичков, учебно-тренировочный. И опциональность там важна. А вы погрязли и заскорузли в своих привычках. Считаете что так, и только так это хорошо.
Вот если человек не станет оборачивать контекст в try... catch, скажите мне, что будет при вашей схеме? А вот что будет:
Цитата |
Fatal error: Uncaught exception |
Причем без
без вариантов! Вы не даете никаких шансов, только ловить и обрабатывать ошибки.
А их не обробатывать надо, их надо
исправлять.
А как же их исправить, коли ничего о них не известно? Что вы сделаете в этом catch полезного, если пользователь допустит ошибку? Вывалите 500 или 404? Сделаете оповещение админу на мыло? Тогда не логи гигабайтные будут, а почта.
А если надеяться на логи с фаталами на эксепшены, так их там в два раза больше будет. Потому что я нотисы могу отфильтровать, а у вас на каждый чих - фатал.
Вот покажите мне реальный ваш обработчик
ошибок на ексепшенах. Именно ошибок, не исключительных ситуаций.
У меня вариантов масса. Такая схема позволяет просто переключить настройку и не плакать. Причем одним всего движением.
Вы упорно не хотите заметить того, что по моей схеме можно работать и как вы привыкли, и совсем по другому, как привык
Arh. Она дает свободу выбора.
А все потому, что вам привили однобокость и зашоренность. Безальтернативность. Зажатость в рамки. Вы люди несвободные, не способные на нестандартные решения. Вы панически боитесь отступить хоть на полшага от общепринятых правил. Это называется "стадное чувство".
Цитата (AllesKlar @ 29.10.2015 - 19:29) |
Ну а залогировать исключение или нет, это дело программиста, и автоматическое НЕлогирование исключений это сделано, на мой взгляд разработчиками специально. Исключение можно кинуть не только ведь для ошибки, а и для ветвления логики. И к чему мне тут логирование? |
Именно! Именно исключений. Ни кто не запретил использовать их в моей схеме совместно с trigger_error. Они очень славно уживаются, не мешая друг другу. Только триггер нужно использовать там, где возможна именно ошибка. При которой дальнейшая работа скрипта может привести к плачевным результатам. И которую нужно как можно скорее исправить. А для этого как можно скорее выловить. А как это сделать, если нихрена не логируется?
А там, где именно исключительная ситуация, свободно можно кинуть и эксепшен.
Что касается гигабайтных логов, так если они гигабайтные, я представляю как криво работает приложение. Причем тут фреймворк? Тут программисту руки отрывать надо.
Цитата (AllesKlar @ 29.10.2015 - 19:29) |
Вот один из очень важных клиентов, который захотел логировать все и вся... |
Желание клиента - закон! Особенно если он очень важный.
Цитата (AllesKlar @ 29.10.2015 - 19:29) |
ГИГАБАЙТ логов за месяц!!! Да кто там в этом копаться будет??? |
Какая тебе разница кто. Ему надо - дай. Не твое дело зачем. Тебе не надо, ни кто пока не отменил error_reporting.
Все таки скучно с вами. Все строем ходить норовите.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.