KMB Да, да, да, да Только трассировка - это и есть "банальный" var_dump входных параметров всего дерева вызова функций приведу пример: PHP: <?php class User { ... function getById($user_id){ var_dump($user_id); // int(-1) ... } Куда дальше?
Но я все-же полагаю что одна короткая команда var_dump проще чем... сколько в вашем примере? 38 строк с использованием специфичных классов. Не зная остального кода - черт его знает.
KMB хм... это входная точка всего проекта, блок try .. catch обрабатывает всего три вида исключений используя трассировку мы можем двигаться вверх по дереву вызовов, и не важно, знаем мы остальной код или нет. В рабочих проектах достаточно взглянуть на 10-15 строк трассировки чтобы понять где ошибка. Да, чаще всего именно так.
Эк вы хитрый, взяли кусок кода из пары строк и спрашиваете почему $user_id = -1. Так и var_dump-ом вы можете просматривать любые переменные. Вобщем я так полагаю, данный спор становится бесполезным, все равно никто никого ни в чем не убедит.
Программисту "старой школы", который мыслит функциями глубиной вложенности не более одной сложно понять, зачем нужны исключения. Да и не нужно это. Так что не кормите тролля, пусть дальше пишет очень полезные скрипты с поддержкой PHP 3.0
Никаких "вопросов" не вижу. Человек, который не понимает, зачем нужны исключения или а) игнорирует их наличие или б) пытается понять, зачем они нужны, используя все источники информации. Тролль же приходит на форум и заставляет все что-то доказывать "вы это всерьез или прикол такой". Если вы не тролль, до будет достаточно утверждения, что на том уровне программирования, что вы находитесь - исключения вам не нужны.
Нет, к сожалению. Я могу спорить, что лучше - исключения или поднимать коды ошибок на неизвестную высоту, но только с тем, кто уходил в глубину хотя бы 4-х классов (ну или функций, это уже менее принципиально). Плоский код же не требует исключений, согласен. Другое дело, что ничего сложного на нем не напишешь. А в данном случаее еще примешивается небольшая клиника, которая на парадигму тоже не тянет (если читали соседнюю ветку про версии PHP). Такому человеку, боюсь, сложно будет доказать, что один блок обработки исключений красивей и понятнее, чем десяток if-ов.
абсолютно рабочие коды. а что смущает? я скажу, что лет 5 назад я говорил, что это зло и достаточно var_dump(). после работы в действительно большом проекте с ООП, MVC и прочими вкусностями я понял что это добро.
PHP: <? catch (Exception $e) это самый примитив. Классификация исключений позволяют разделить их по уровням и сразу определить, чье оно. Вы можете делать PHP: <? class MyException extends Exception {} и PHP: <? try { blablabla } catch (MyException $e) если в blablabla было брошено MyException, оно будет поймано в этом try, а если было брошено какое-нибудь другое (например просто Exception), оно летит дальше.
я как-то прочитал на этом форуме пришлось сесть и два дня разбираться как дебажить нетбинсом. сейчас вар_дампами редко дебажу)
Ну ладно, так и быть, убедили, вардамп - отстой, а try это труЪ Хотя вот с этим: тоже можно при желании поспорить. Как и с этим:
Ну вы и развели дискуссию)) Все хорошо к месту, иногда вардампами легче и быстрее дебажить, а иногда намного тяжелее, чем пробежаться хдебагом или еще чем то (тоже кстати от степени бага и типа кода зависит), а что касается исключений, то они ОЧЕНЬ НУЖНЫ, но не везде, простой пример, есть ф-я a1, a2 a3... a1 вызывает a2, которая вызывает a3, которая хм давайте решим что тоже вызывает a1 (эдакая рекурсия), ф-ии по логике выводят тру или фалсе, но ф-я a2 работает с интернет-соединением и так получается, что возникает неоднозначное поведение, когда интернета нет, ладно, вводим доп кода в a2, такой код ошибки, блин, а a1 то тоже работает с a2, ладно и в ней добавили код ошибки, если его a2 выкидывает, бляяя, а a3 то тоже с ними работает.... ладно, везде добавили коды ошибок, но скажем наступил момент, когда интернет соединение надо вести через прокси, а головная система должна обрабатывать, когда все таки нет интернета, а когда сдох прокси, и в данном моменте вы - человек не использующий исключений, а обходящийся обычными кодами так тонко, приглушенно потянете нежное бляяяяяяя, а ваш товарищ добавит еще одно throw в код и пойдет пить чай с пирожками, понятно?)
В целом достаточно почитать даже не спец литературу, а википедию. По-этому я и говорил, что не нужно тут троллить.
http://ru.php.net/manual/en/function.se ... andler.php - это так сказать для тех, кому вдруг действительно понадобилось без if-ов. Но тссссс, не открывайте этой тайны авторам Википедии ))
Позвольте, но в описании функции сказано следующее: error_types Can be used to mask the triggering of the error_handler function just like the error_reporting ini setting controls which errors are shown. Without this mask set the error_handler will be called for every error regardless to the setting of the error_reporting setting.
Да, и не забывайте о том, что для исключений тоже есть обработчик - set_exception_handler Так что можно, можно если сильно приспичит обработать все ошибки и исключения без try-catch
как-то уныло. Это все про ошибки уровня системы. А что делать с логическими ошибками (if ($a!=$b) return $error; произвольного уровня вложенности?