Хватит троллить уже, мнение о себе уже не исправите. И учить вас тут никто не собирается - если не видите применения - не используйте, остальным то какая печаль.
Вызываете исключение. Для этого они и предназначены, что бы в одном месте создать исключение, а в другом - поймать.
Недавно столкнулся с примером, когда *ля используют ошибки, а не исклюения Вот кусок кода PHP: <?php $this->drv_memcache = new \Memcache; if(!$this->drv_memcache->connect('localhost', 11211)){ throw new \kernel\c\Exception('cache', 'memcache_noServer'); } Ставь не ставь собаку, а при невозможности подключения все равно будет ошибка, которая хочешь не хочешь все равно обработается ф-й установленной set_error_handler..., но мало того ошибка будет в классе, подключаемом через spl_autoload_register, и она не даст корректно вызвать исключения и приведет к тому, что выползет ошибка невозможности вообще подключить класс, причем ДРУГОЙ - тот кто вызывается первым, и который использует мемкеш, вот может кто посоветует что, как корректно это исправить, сам так и не придумал, хотя и не горит особо
А в чем вопрос то? Мемкеш вообще-то не должен влиять на работоспособность, т.е. дизайн программы должен быть таким, что отвалившийся мемкеш прозрачен. Т.е. нужно где-то это исключение словить и проигнорить. Ну и обработчик исключений лучше, конечно, дернуть заранее, что бы он не дергался автолоадом уже на исключении.
Основная проблема в том, что мемкеш выдает ошибку именно ОШИБКУ, а не исключение, которую невозможно перехватить и которая идет в обработчик ошибок так или иначе, и я не хочу отвалившийся мемкеш сделать прозрачным, я хочу, чтобы исключение летело, и сокрее всего останавливалась работа, хотя мб и нет, но не в этом суть, суть в том, что этот **** мемкеш коннект кидает именно ошибку, что ну никак неверно с точки зрения логики
Дак в этом и проблема, что нельзя узнать, работает ли сервер, а при коннекте выдает ошибку, выдавал бы просто false в результаты - было бы куда логичнее
Просто если у вас фреймворк и там обработчик ошибок, который ловит варнинги - то тут и возникает описанная вами проблема. Собака должна помочь, хотя это и не самый лучший вариант - лучше все же сделать, что бы все классы находились, особо если это обработчик событий.
Собака скрывает вывод ошибки, но не спасает от вызова обработчика. Возвращать то он false возвращает, И ЭТОГО ДОСТАТОЧНО, но ведь разработчики то бл* самые умные, они еще и ошибку выкидывают, которая там ну совсем не нужна, этож е мое не деление на 0
Прежде чем что-то говорить о разработчиках, выучите какие бывают уровни ошибок и что они значат. Не вижу совершенно никаких проблем. На продакшене обработка нотисов и варнингов в своих функциях ДОЛЖНА быть выключена - только в лог.
Ты вообще читаешь то, что я пишу? Я пишу, что сама по себе ошибка в данном случаи нелогична, а также она приводит к вышеописанной мной проблеме, а теперь у меня к тебе вопрос, ты говоришь об уровнях ошибок, поясни каким боком они в данном вопросе, а то мне кажется что твои ответы несколько голословны
connect сообщает варнингом, что он не может подсоединится, ибо это НУЖНО для того, что бы найти корни проблемы - по какой причине же нет соединения (представьте себе, их может быть куча). Этот варнинг предназначен для разработчиков и должен быть в логах - для нахождения проблемы. Если некий обработчик ошибок, во-первых, ловит нотисы и варнинги (это НЕ ОШИБКИ, кстати), а, во-вторых, вообще его физически почему-то нет - все ломается. Все правильно понял? Не вижу тут проблем connect-а, только несколько кривых рук.
Невозможность соединения по внешней причине - не ошибка приложения Прошу прощение, но смысл таких сложных с точки зрения языка конструкций понять не могу Уровни, уровни то тут при чем? Я считаю, что в данном случаи тривиального false на выходе хватает, а ошибку выдавать ни в коем случаи не нужно, т.к. повторюсь - это не ошибка приложения...
Не допускать подобных ошибок. MiksIr Думайте мне важно что здесь думают обо мне? Да как-то до фонаря. Разговор, насколько помню, был о том, как отловить ошибки и исключения без try...catch Решение я привел? Привел. Вот и все. Без try...catch. Без if-ов. "Понятно и красиво". ))
10 раз лол Вам показалось. Это вы вели об этом разговор в силу своей упертости. Мы же говорили о том, какие преимущества дают исключение. Но этот разговор не для вас - объяснять глухим упрямцам о прелестях музыки, когда они твердят, что и жестами неплохо обходятся, смысла не вижу.
Дак в данном случаи вообще ничего не надо выводить, ну нотис максимум, но, если вы не заметили, за нотисом сразу варнинг идет
Вот почему там варнинг и нотис я хз. Гляну потом сырцы - расскажу. Но ни варнинг ни нотис - фататльными ошибками не являются, так что фиксите свой обработчик ошибок и все.
Прерывают не эти ошибки, а отсуствие класса, который _указан_ как обработчик ошибок. У вас сломанный код - он не должен работать, и хорошо, что ничего не работает. Не понимаю, что вы привязались к этому коннекту - любой другой варнинг из кода (хотя бы стрикт) приведет точно к тому же.
Почему сломанный то? Если сервер мемкеша не отвечает, разве код виноват? А не было бы варнинга, то отлично бы обрабатывал эту ситуацию