Форумчане, хочу услышать ваши мнения о том, где уместно а где нет применять исключения.
На тему, собственно, натолкнуло прочтение вот этой статьи http://habrahabr.ru/blogs/php/30399/
Итак, вопросы на повестку дня начинающего php-шника.
1. Уместно ли строить на исключениях логику приложения? Пример - как в статье на хабре обработка данных формы авторизации. Вообще говоря, выглядит, вроде, красиво. Но многие писали в комментах, что это неправильно.
2. Вообще, в каких случаях лучше использовать исключения, а в каких if..else и по возвращенному значению функции, например, судить о корректности произошедшей ситуации?
я понимаю, что тема в каком-то смысле философская, но хочется послушать ваши доводы. всем спасибо.
Спустя 9 часов, 7 минут, 25 секунд (11.03.2012 - 07:49) Игорь_Vasinsky написал(а):
в статье описаны приимущества использования, ты уж сам реши - нужны они тебе или нет. я не использую например.
Спустя 1 час, 7 минут, 39 секунд (11.03.2012 - 08:57) alexbel2404 написал(а):
http://habrahabr.ru/blogs/php/21376/ вот еще почитай.
Спустя 6 минут, 21 секунда (11.03.2012 - 09:03) sergeiss написал(а):
По моим представлениям, try-catch подобны страховке. Типа КАСКО - от случайных повреждений. Причем в случае программирования это даже еще лучше - платить бабки не надо, достаточно просто написать чуть больше кода 
И ты уже сам должен оценить, насколько необходима эта страховка в каждом конкретном случае.
Если ты уверен, что возвращаемый результат можно оценить на уровне "false или не false", то тогда можно и без исключений.
Но если внутри какого-то блока возможно возникновение ошибок, причем ты заранее не можешь оценить, какие именно ошибки будут, то лучше работать с исключениями. Например, у тебя есть какая-то большая формула. В знаменателе, в разных местах формулы, есть разные переменные, которые могут иногда быть нулевыми, не важно, по какой причине. Тогда лучше, наверное, будут исключения. Иначе придется проверять на равенство нулю много переменных. А если тебе придется изменить формулу? Тогда придется менять условия. В случае же работы с исключениями общая логика не изменится.
Это я один пример привел. Еще раз повторю, что надо смотреть по ситуации, а не "лепить" везде исключения. Так что философии тут нету
, есть только рационализм.
Пример из жизни, насчет "исключений"
Когда человек только начинает кататься на роликовых коньках, то может поначалу часто падать, да еще и не умеет падать аккуратно. Поэтому ему нужна хорошая защитная экипировка. Когда опытный - то уже не так она важна, т.к. человек очень редко падает, плюс к тому умеет падать.
Вот и попробуй ответь однозначно на вопрос "нужна ли защита человеку, который катается на роликовых коньках?".

И ты уже сам должен оценить, насколько необходима эта страховка в каждом конкретном случае.
Если ты уверен, что возвращаемый результат можно оценить на уровне "false или не false", то тогда можно и без исключений.
Но если внутри какого-то блока возможно возникновение ошибок, причем ты заранее не можешь оценить, какие именно ошибки будут, то лучше работать с исключениями. Например, у тебя есть какая-то большая формула. В знаменателе, в разных местах формулы, есть разные переменные, которые могут иногда быть нулевыми, не важно, по какой причине. Тогда лучше, наверное, будут исключения. Иначе придется проверять на равенство нулю много переменных. А если тебе придется изменить формулу? Тогда придется менять условия. В случае же работы с исключениями общая логика не изменится.
Это я один пример привел. Еще раз повторю, что надо смотреть по ситуации, а не "лепить" везде исключения. Так что философии тут нету

Пример из жизни, насчет "исключений"

Вот и попробуй ответь однозначно на вопрос "нужна ли защита человеку, который катается на роликовых коньках?".
Спустя 2 минуты, 44 секунды (11.03.2012 - 09:06) Игорь_Vasinsky написал(а):
Цитата |
"нужна ли защита человеку, который катается на роликовых коньках?" |
ответ, ему нужны не просто коньки, а коньки с доп колёсиками (как для велосипедов делают - на заднем - + 2 дополнительных)
