ФорумПрограммированиеPHP для идиотовPHP и ООП → В чем прелесть Exception?

В чем прелесть Exception?

  • andipas

    Сообщения: 170 Репутация: N Группа: Кто попало

    Spritz Март 14, 2011, 6:56 п.п.

    Насколько я понял, если использовать Exception, то необходимо везде где они есть использовать try и catch, но разве это удобно?

    В исключительных случаях да, но не везде и всюду же. Нет разве? Докажите чем?

    По моему, удобней - если ошибка критическая, делаем die и выводим ошибку. Если не критическая, то логируем куда нибудь.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 14, 2011, 7:35 п.п., спустя 39 минут 1 секунду

    По моему, удобней - если ошибка критическая, делаем die и выводим ошибку. Если не критическая, то логируем куда нибудь.

    а по моему - пиздец :)
    Сапожник без сапог
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Март 14, 2011, 7:52 п.п., спустя 17 минут 39 секунд

    try - catch ловят исключение из любого уровня вложенности

    function a(){
    try {
    b();
    } catch (Exception $e){
    print 'exception catched';
    }

    }

    function b(){
    c();
    }

    function c(){
    d();
    }

    function d(){
    if file not exists throw new Exception;
    }

    ошибка в d в целом не критичная, но в контексте a() она означает что нужно свернуться. перепиши этот код без использования исключений. при этом учти, что функции могут возвращать пустые значения (null, false), т.е. их нельзя использовать для сигнализации об ошибке.
    не всё полезно, что в swap полезло
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz Март 14, 2011, 9:26 п.п., спустя 1 час 33 минуты 59 секунд

    master, спасибо за обьяснение, сам туйово понимаю суть тру-кетча, а тут чутка понял в чем фишка. Осталось только ещё понять как правильно сделать логирование ошибок для обозначения конкретного места её возникновения + места, откуда ноги растут (то есть что именно могло повлечь ошибку в данном месте).
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи
  • andipas

    Сообщения: 170 Репутация: N Группа: Кто попало

    Spritz Март 14, 2011, 9:45 п.п., спустя 2 минуты 46 секунд

    master, да хороший пример, спасибо. Вот смотрю на него и понимаю, а когда код пишу, не нахожу таких ситуаций где он бы оправдал себя. Просто нужно больше практики с ООП видимо.
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz Март 15, 2011, 3:09 п.п., спустя 17 часов 24 минуты 19 секунд

    у мну класс кодинга видео
    куча возможных ошибок
    завершение по ошибке всегда одно (запись ошибки в БД и удаление лишних файлов)
    тру-кэтч работает как нельзя кстати
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Март 15, 2011, 4:02 п.п., спустя 53 минуты 4 секунды

    Просто нужно больше практики с ООП видимо

    нужно больше практики просто…
  • Technic

    Сообщения: 1 Репутация: N Группа: Кто попало

    Spritz Июль 16, 2011, 4:33 п.п., спустя 122 дня 23 часа 30 минут

    die это конечно жесть в web-приложении.

    Осталось только ещё понять как правильно сделать логирование ошибок для обозначения конкретного места её возникновения + места, откуда ноги растут


    используйте debug_backtrace
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz Июль 16, 2011, 4:37 п.п., спустя 4 минуты 5 секунд

    Technic, Смени аву, эта ава совершенно другого человека. А то я подумал что SA уже в программисты записалсо )
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz Июль 16, 2011, 9:57 п.п., спустя 5 часов 20 минут 8 секунд

    исключения надо правильно готовить.

    исколючение - это сигнал о НЕШТАТНОЙ ситуации. например если ваша БД недоступна…
    не стоит их использовать просто вместо break или return. это "дорогая" операция

    можно объявить глобальный обработчик неперехваченных исключений – для их логирования.

    можно и нужно объявлять свои классы исключений и в catch указывать обработку конкретных типов.
    свой кастомный тип может нести дополнительную инфу, а не только строку с сообщением

    ну и как правильно master написал, они помогают упростить логику обработки ошибки при большой вложенности вызовов

    в то же время многие разработчики не переносят исключения на дух и имеют свои аргументы. exceptions are bad
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Июль 16, 2011, 11:44 п.п., спустя 1 час 47 минут 26 секунд

    exceptions are bad

    стопудово DIE is better xDD
    Сапожник без сапог
  • SA

    Сообщения: 37 Репутация: N Группа: Адекваты

    Spritz Июль 20, 2011, 12:48 п.п., спустя 3 дня 13 часов 3 минуты

    Technic, Смени аву, эта ава совершенно другого человека


    да, это это ава совершенно другого человека.
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz Июль 20, 2011, 12:59 п.п., спустя 11 минут 36 секунд

    SA, меняй аву, Техник первым был в этой теме.
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz Июль 20, 2011, 10:43 п.п., спустя 9 часов 44 минуты

    На try-catch-finalize задрочены шарпокодеры!

Пожалуйста, авторизуйтесь, чтобы написать комментарий!