За последние 24 часа нас посетили 34326 программистов и 1694 робота. Сейчас ищут 693 программиста ...

Часто ли вы используете обработку ошибок (try, throw,catch)?

Тема в разделе "Прочее", создана пользователем alex455, 27 июл 2011.

  1. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Хватит троллить уже, мнение о себе уже не исправите. И учить вас тут никто не собирается - если не видите применения - не используйте, остальным то какая печаль.
     
  2. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Вызываете исключение. Для этого они и предназначены, что бы в одном месте создать исключение, а в другом - поймать.
     
  3. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    так мне надо проследить всю цепочку.
     
  4. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    В смысле "проследить"?
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    так там можно передать предыдущее и будет вам цепочка. параметры посмотрите внимательнее.
     
  6. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Недавно столкнулся с примером, когда *ля используют ошибки, а не исклюения

    Вот кусок кода
    PHP:
    1. <?php
    2. $this->drv_memcache = new \Memcache;
    3.     if(!$this->drv_memcache->connect('localhost', 11211)){
    4.         throw new \kernel\c\Exception('cache', 'memcache_noServer');
    5. }
    Ставь не ставь собаку, а при невозможности подключения все равно будет ошибка, которая хочешь не хочешь все равно обработается ф-й установленной set_error_handler..., но мало того ошибка будет в классе, подключаемом через spl_autoload_register, и она не даст корректно вызвать исключения и приведет к тому, что выползет ошибка невозможности вообще подключить класс, причем ДРУГОЙ - тот кто вызывается первым, и который использует мемкеш, вот может кто посоветует что, как корректно это исправить, сам так и не придумал, хотя и не горит особо ;)
     
  7. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    А в чем вопрос то? Мемкеш вообще-то не должен влиять на работоспособность, т.е. дизайн программы должен быть таким, что отвалившийся мемкеш прозрачен. Т.е. нужно где-то это исключение словить и проигнорить. Ну и обработчик исключений лучше, конечно, дернуть заранее, что бы он не дергался автолоадом уже на исключении.
     
  8. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Основная проблема в том, что мемкеш выдает ошибку именно ОШИБКУ, а не исключение, которую невозможно перехватить и которая идет в обработчик ошибок так или иначе, и я не хочу отвалившийся мемкеш сделать прозрачным, я хочу, чтобы исключение летело, и сокрее всего останавливалась работа, хотя мб и нет, но не в этом суть, суть в том, что этот **** мемкеш коннект кидает именно ошибку, что ну никак неверно с точки зрения логики
     
  9. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Нет, connect дает только варнинги и нотисы. Ищите проблему в другом.
     
  10. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Дак в этом и проблема, что нельзя узнать, работает ли сервер, а при коннекте выдает ошибку, выдавал бы просто false в результаты - было бы куда логичнее
     
  11. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
  12. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Просто если у вас фреймворк и там обработчик ошибок, который ловит варнинги - то тут и возникает описанная вами проблема. Собака должна помочь, хотя это и не самый лучший вариант - лучше все же сделать, что бы все классы находились, особо если это обработчик событий.
     
  13. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Собака скрывает вывод ошибки, но не спасает от вызова обработчика. Возвращать то он false возвращает, И ЭТОГО ДОСТАТОЧНО, но ведь разработчики то бл* самые умные, они еще и ошибку выкидывают, которая там ну совсем не нужна, этож е мое не деление на 0
     
  14. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Прежде чем что-то говорить о разработчиках, выучите какие бывают уровни ошибок и что они значат.
    Не вижу совершенно никаких проблем. На продакшене обработка нотисов и варнингов в своих функциях ДОЛЖНА быть выключена - только в лог.
     
  15. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Ты вообще читаешь то, что я пишу? Я пишу, что сама по себе ошибка в данном случаи нелогична, а также она приводит к вышеописанной мной проблеме, а теперь у меня к тебе вопрос, ты говоришь об уровнях ошибок, поясни каким боком они в данном вопросе, а то мне кажется что твои ответы несколько голословны
     
  16. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    connect сообщает варнингом, что он не может подсоединится, ибо это НУЖНО для того, что бы найти корни проблемы - по какой причине же нет соединения (представьте себе, их может быть куча). Этот варнинг предназначен для разработчиков и должен быть в логах - для нахождения проблемы.

    Если некий обработчик ошибок, во-первых, ловит нотисы и варнинги (это НЕ ОШИБКИ, кстати), а, во-вторых, вообще его физически почему-то нет - все ломается. Все правильно понял? Не вижу тут проблем connect-а, только несколько кривых рук.
     
  17. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Невозможность соединения по внешней причине - не ошибка приложения

    Прошу прощение, но смысл таких сложных с точки зрения языка конструкций понять не могу

    Уровни, уровни то тут при чем?

    Я считаю, что в данном случаи тривиального false на выходе хватает, а ошибку выдавать ни в коем случаи не нужно, т.к. повторюсь - это не ошибка приложения...
     
  18. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Не допускать подобных ошибок.

    MiksIr
    Думайте мне важно что здесь думают обо мне? Да как-то до фонаря.
    Разговор, насколько помню, был о том, как отловить ошибки и исключения без try...catch
    Решение я привел? Привел. Вот и все. Без try...catch. Без if-ов. "Понятно и красиво". :)))
     
  19. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    ЭТО НЕ ОШИБКА, ЭТО ПРЕДУПРЕЖДЕНИЕ. Если разница ускользает - говорить не о чем вообще.
     
  20. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    10 раз лол
    Вам показалось. Это вы вели об этом разговор в силу своей упертости. Мы же говорили о том, какие преимущества дают исключение. Но этот разговор не для вас - объяснять глухим упрямцам о прелестях музыки, когда они твердят, что и жестами неплохо обходятся, смысла не вижу.
     
  21. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Дак в данном случаи вообще ничего не надо выводить, ну нотис максимум, но, если вы не заметили, за нотисом сразу варнинг идет
     
  22. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Вот почему там варнинг и нотис я хз. Гляну потом сырцы - расскажу. Но ни варнинг ни нотис - фататльными ошибками не являются, так что фиксите свой обработчик ошибок и все.
     
  23. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    дак эти ошибки прерывают spl_autoload_register, при этом не давая выкинуть исключение корректно
     
  24. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Прерывают не эти ошибки, а отсуствие класса, который _указан_ как обработчик ошибок. У вас сломанный код - он не должен работать, и хорошо, что ничего не работает. Не понимаю, что вы привязались к этому коннекту - любой другой варнинг из кода (хотя бы стрикт) приведет точно к тому же.
     
  25. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Почему сломанный то? Если сервер мемкеша не отвечает, разве код виноват? А не было бы варнинга, то отлично бы обрабатывал эту ситуацию