[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Exception VS trigger_error при дебаггинге
Страницы: 1, 2, 3, 4
twin
Цитата (MiksIr @ 1.08.2013 - 15:50)
Вот только функция не устанавливает, а возвращает окончание wink.gif

Ну вон даже разрабы PHP и те ошибаются в названиях. smile.gif
Цитата
Во-первых, название. Мы генерим ошибку или мы генерим нотис?


Цитата
В том то и дело, что пользователь (пользователь библиотеки) не может реагировать, ибо не может как-то перехватить эту ошибку.
Да почему не может то??? Я для этого и написал схему. Теперь может запросто и то и другое. А у вас только одно.

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

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

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

user posted image
twin
Или вы про return false? Ну да, не написал, писал тут в топике, поторопился. Суть то все равно не в том.

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

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

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

user posted image
twin
Цитата (MiksIr @ 1.08.2013 - 16:06)
Без исключений - не сможет. А у нас вроде ваша аудитория, как мы выяснили, не знает этого слова.

Захочет - сможет. Узнает и сможет. Для того и пишу.
А вот вы выбора вообще никакого не оставляете.

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

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

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

user posted image
bestxp
Выбор? А зачем выбирать устарелое, надо рассказывать о хорошем и показывать плохое как пример как нельзя делать, живой пример нельзя использовать trigger_error .

В функциональном языке может быть и оправдан он был бы, например erlang , где ооп в принципе нету как такогового, но и подход к программированию там совершенно другой.

Но так как у php ориентация на ООП , то и использование эксепшенов должно быть на 100% везде.

Ну у каждого языка свое предназначение. Сегодня ПХП популярен, завтра потерял, взлетел новый, не так давно Руби не так популярен был, теперь стал, все из-за быстрой разработке на нем, синтаксиса и тд.

Мне так вообще нравиться js . и я сейчас в процессе изучения node.js , но пока академические у меня интересы к нему.

Например заменой может стать и язык от гугла go, но у каждого свои цели

twin
Цитата (bestxp @ 1.08.2013 - 16:58)
Выбор? А зачем выбирать устарелое, надо рассказывать о хорошем и показывать плохое как пример как нельзя делать, живой пример нельзя использовать trigger_error .

Выбор должен быть всегда. Мало ли кому как захочется отреагировать на варнинг. Еще раз повторю. Если бы это было верным, то все без исключения (каламбур smile.gif ) функции PHP выкидывали бы фатал еррор. Но почему то они этого не делают?

Или вы круче всех разрабов PHP?

Рассказывать да, не спорю. Так вы просто наверное не читали статью. Там нет ни слова о том, что не нужно юзать исключений. Даже наоборот, я попытался дословно в картинках объяснить что это и зачем. Но лейтмотив статьи - рано хоронить trigger_error(). В нужных местах он ой как еще может пригодиться.

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

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

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

user posted image
Valick
Цитата
Но так как у php ориентация на ООП

Это вам Расмус напел?
Очнитесь информация в тех курсах расчитана на начинающих, для которых echo 'Hello World'; написать или денвер запустить, это уже победа (утрирую конечно).
А при вашем уровне знаний, пора бы уже и перестать "пальцы гнуть", а то со стороны выглядит как будто школьники на перемене айфонами меряются... и тычут пальцами на того кто с нокией или моторолой ходит...


_____________
Стимулятор ~yoomoney - 41001303250491
twin
MiksIr
Цитата
Потому что PHP - нелогичный и несистемный язык с тяжелым прошлым, которое вы так активно защищаете.
Я не считаю прошлое тяжелым. Быть может именно из-за его демократичности (которую вы пафосно называете непрофессионализмом) перевернулась моя судьба. Быть может в то время, когда я решил сменить профессию, у меня не хватило бы терпения изучать его так, как предлагаете вы. Прямо с "хорошего". С ООП, с тех же ексепшенов. И наверняка я такой не один.

Я и сейчас прекрасно понимаю, как тяжело новичкам разобраться даже в азах. Не по наслышке, вы прекрасно знаете. И понимаю, что войти в язык с каждой версией труднее и труднее. На тот уровень, который вам кажется правильным. Так что я учил и буду учить людей тому, что они способны воспринять. Дальше - дело техники.

Здесь на форуме есть несколько завсегдатаев, у которых я теперь многому учусь. А когда то они были моими учениками.

Цитата
Почему нельзя сразу учить людей использовать исключения - я не понимаю.

Да почему нельзя учить, где я это сказал? Я всего навсего извлек пользу из того, чем вы в силу религиозных убеждений пользоваться не можете. Если бы было возможно использовать исключения для тех целей, что я описал в статье, она называлась бы иначе.

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

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

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

user posted image
killer8080
Цитата (bestxp @ 1.08.2013 - 10:56)
Итак у нас есть некая система А которая работает с системой Б через сокеты, которые физически находятся на разных серверах
Итак внимание что происходит если fsocket не может приконнектиться?
Правильно warning и все, хотя по сути это исключение, так как упал сервер Б, или упала сеть или днс сервер или еще чего, админ перенастроил фаервол или маршрутизацию, но что происходит, скрипт выплюнул варнинг и продолжил работать, и потом засыпал ошибками и тд.

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

варнинг и не нужно обрабатывать, логика строится по return value
$servers_list = [...];
$server = reset($servers);
while( $fh = @fsockopen($server) === false && $server = next($servers_list) ){}

if($fh !== false) {
// Ok
}
else {
// Error case
}


чем в вашем примере, исключение принципиально лучше?
bestxp
Цитата (killer8080 @ 2.08.2013 - 02:45)
Цитата (bestxp @ 1.08.2013 - 10:56)
Итак у нас есть некая система А которая работает с системой Б через сокеты, которые физически находятся на разных серверах
Итак внимание что происходит если fsocket не может приконнектиться?
Правильно warning и все, хотя по сути это исключение, так как упал сервер Б, или упала сеть или днс сервер или еще чего, админ перенастроил фаервол или маршрутизацию, но что происходит, скрипт выплюнул варнинг и продолжил работать, и потом засыпал ошибками и тд.

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

варнинг и не нужно обрабатывать, логика строится по return value
$servers_list = [...];
$server = reset($servers);
while( $fh = @fsockopen($server) === false && $server = next($servers_list) ){}

if($fh !== false) {
// Ok
}
else {
// Error case
}


чем в вашем примере, исключение принципиально лучше?

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

В твоем случае идет подавление ошибки, что по правде категорически делать нельзя. Так как подавив их, ты узнаешь в чем проблема вообще.
Быстрый ответ:

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