За последние 24 часа нас посетили 34155 программистов и 1709 роботов. Сейчас ищут 766 программистов ...

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

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

  1. KMB

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

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Во всех описанных вами ситуациях обычно достаточно самого банального var_dump
     
  2. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    KMB
    Да, да, да, да

    Только трассировка - это и есть "банальный" var_dump входных параметров всего дерева вызова функций

    приведу пример:
    PHP:
    1. <?php
    2.  
    3. class User
    4. {
    5. ...
    6. function getById($user_id){
    7.     var_dump($user_id); // int(-1)
    8.     ...
    9. }
    10.  
    Куда дальше?
     
  3. KMB

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

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Но я все-же полагаю что одна короткая команда var_dump проще чем... сколько в вашем примере? 38 строк с использованием специфичных классов.

    Не зная остального кода - черт его знает.
     
  4. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    KMB
    хм... это входная точка всего проекта, блок try .. catch обрабатывает всего три вида исключений

    используя трассировку мы можем двигаться вверх по дереву вызовов, и не важно, знаем мы остальной код или нет. В рабочих проектах достаточно взглянуть на 10-15 строк трассировки чтобы понять где ошибка. Да, чаще всего именно так.
     
  5. KMB

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

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Эк вы хитрый, взяли кусок кода из пары строк и спрашиваете почему $user_id = -1.
    Так и var_dump-ом вы можете просматривать любые переменные. Вобщем я так полагаю, данный спор становится бесполезным, все равно никто никого ни в чем не убедит.
     
  6. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Программисту "старой школы", который мыслит функциями глубиной вложенности не более одной сложно понять, зачем нужны исключения. Да и не нужно это.
    Так что не кормите тролля, пусть дальше пишет очень полезные скрипты с поддержкой PHP 3.0
     
  7. KMB

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

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Ну, кто сейчас, написав вот это свое сообщение, пытается заниматься троллингом, это вопрос.
     
  8. MiksIr

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

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

    Тролль же приходит на форум и заставляет все что-то доказывать "вы это всерьез или прикол такой".

    Если вы не тролль, до будет достаточно утверждения, что на том уровне программирования, что вы находитесь - исключения вам не нужны.
     
  9. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    я бы скорректировал: при вашей парадигме программирования исключения, скорее всего, вам не нужны
     
  10. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Я подкорректирую ещё немного:
    На ваших версиях языка программирования исключений просто нет.
     
  11. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Нет, к сожалению. Я могу спорить, что лучше - исключения или поднимать коды ошибок на неизвестную высоту, но только с тем, кто уходил в глубину хотя бы 4-х классов (ну или функций, это уже менее принципиально).
    Плоский код же не требует исключений, согласен. Другое дело, что ничего сложного на нем не напишешь.
    А в данном случаее еще примешивается небольшая клиника, которая на парадигму тоже не тянет (если читали соседнюю ветку про версии PHP). Такому человеку, боюсь, сложно будет доказать, что один блок обработки исключений красивей и понятнее, чем десяток if-ов.
     
  12. 440Hz

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

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

    а что смущает?

    я скажу, что лет 5 назад я говорил, что это зло и достаточно var_dump(). после работы в действительно большом проекте с ООП, MVC и прочими вкусностями я понял что это добро.
     
  13. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. <?
    2. catch (Exception $e)
    это самый примитив. Классификация исключений позволяют разделить их по уровням и сразу определить, чье оно. Вы можете делать
    PHP:
    1.  
    2. <?
    3. class MyException extends Exception {}
    и
    PHP:
    1. <?
    2. try {
    3.    blablabla
    4. }
    5. catch (MyException $e)
    если в blablabla было брошено MyException, оно будет поймано в этом try, а если было брошено какое-нибудь другое (например просто Exception), оно летит дальше.
     
  14. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    я как-то прочитал на этом форуме
    пришлось сесть и два дня разбираться как дебажить нетбинсом. сейчас вар_дампами редко дебажу)
     
  15. KMB

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

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Ну ладно, так и быть, убедили, вардамп - отстой, а try это труЪ

    Хотя вот с этим:
    тоже можно при желании поспорить.

    Как и с этим:
     
  16. karlozzz

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

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Ну вы и развели дискуссию)) Все хорошо к месту, иногда вардампами легче и быстрее дебажить, а иногда намного тяжелее, чем пробежаться хдебагом или еще чем то (тоже кстати от степени бага и типа кода зависит), а что касается исключений, то они ОЧЕНЬ НУЖНЫ, но не везде, простой пример, есть ф-я a1, a2 a3... a1 вызывает a2, которая вызывает a3, которая хм давайте решим что тоже вызывает a1 (эдакая рекурсия), ф-ии по логике выводят тру или фалсе, но ф-я a2 работает с интернет-соединением и так получается, что возникает неоднозначное поведение, когда интернета нет, ладно, вводим доп кода в a2, такой код ошибки, блин, а a1 то тоже работает с a2, ладно и в ней добавили код ошибки, если его a2 выкидывает, бляяя, а a3 то тоже с ними работает.... ладно, везде добавили коды ошибок, но скажем наступил момент, когда интернет соединение надо вести через прокси, а головная система должна обрабатывать, когда все таки нет интернета, а когда сдох прокси, и в данном моменте вы - человек не использующий исключений, а обходящийся обычными кодами так тонко, приглушенно потянете нежное бляяяяяяя, а ваш товарищ добавит еще одно throw в код и пойдет пить чай с пирожками, понятно?)
     
  17. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    karlozzz
    немного сумбурно описано, но в целом согласен
     
  18. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    В целом достаточно почитать даже не спец литературу, а википедию. По-этому я и говорил, что не нужно тут троллить.
     
  19. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    дайте потроллить, нах!

    =)
     
  20. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Не юзаю.

    =)
     
  21. KMB

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

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    http://ru.php.net/manual/en/function.se ... andler.php - это так сказать для тех, кому вдруг действительно понадобилось без if-ов. Но тссссс, не открывайте этой тайны авторам Википедии :)))
     
  22. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    KMB
    Error Handler - это обработка ошибок на одном и единственном уровне.
     
  23. KMB

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

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Позвольте, но в описании функции сказано следующее:

    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.
     
  24. KMB

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

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Да, и не забывайте о том, что для исключений тоже есть обработчик - set_exception_handler
    Так что можно, можно если сильно приспичит обработать все ошибки и исключения без try-catch
     
  25. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    как-то уныло. Это все про ошибки уровня системы.
    А что делать с логическими ошибками (if ($a!=$b) return $error;
    произвольного уровня вложенности?