На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
  
> Ошибка в классе - как обрабатывать?
    Навеяно обработчик исключений.
    Цитата
    З.Ы. и вообще что за мания пошла бросать исключения в методах класса. Руки бы оторвать разработчикам.

    и
    Цитата
    Ну я бы наоборот за возвращаемые значения руки поотрывал...

    Ваше мнение, коллеги!
      Я за исключения.

      Если же немного расширить контекст, то вот эти вот проблемы:
      Цитата zss @
      Например я пишу в сокет в методе и получаю исключение. Я его отлавливаю там же и вывожу
      статус что не получилось. Тоесть теоритически можно попытаться еще раз.

      А что если он закрылся ? Тогда либая повторная попытка заведомо приведет к исключению.
      Что делать ? Бросать свое исключение ? Дергать переданный в класс делегат ?
      Но тогда как удалить этот объект, если вызов делегата происходит из catch метода самого класса?

      решены в системе состояний в Common Lisp. По сути, это те же исключения, но в которых
      1) при нахождении обработчика исключения при подъеме по стеку не вызываются деструкторы всех объектов
      2) код между обработчиком ошибки и местом, где ошибка возникла, может предоставить несколько точек рестарта, и обработчик может выбрать один из рестартов (при этом весь стек ниже точки рестарта будет развернут, и у соответствующие объекты будут разрушены)
        No silver bullets.
          Исключения, конечно.
          Если кидаются исключения, то код выглядит так:

          Proc1();
          Proc2();
          Proc3();

          если коды ошибок, то так:

          if (Proc1() = NOERROR) then
          if (Proc2() = NOERROR) then
          if (Proc3() <> NOERROR) then
          ;// обработка ошибки в Proc3
          else
          ;// обработка ошибки в Proc2
          else
          ;// обработка ошибки в Proc1
            Исключения! Контролируемые!
            Возвращаемые значения, как у WinAPI мало кто проверяет.
            Очень знаете ли бесит, когда в прикладной программе из-за какой-нибудь чепухи вылезает Unhandled Exception или Segmentation Fault и программу прибивают.
            А не в прикладных это еще более серьезно.
            А тут, хочешь не хочешь - придется.
              еxception есть хорошо :yes:
                Коды возврата - это старый "сишный" стиль
                Новый стайл - исключения
                  В прикладной программе - только исключения. Но в драйверах и вредных программах типа вирусов их юзать "тяжко", т.к. использование С++ исключений обязательно тянет за собой CRTL. Однако, писателей прикладный программ количественно больше, поэтому исключения рулят :)
                    Что-то холивар не задался. <_<
                    Хде, я вас спрашиваю, оппозиция к исключениям? :ph34r:
                      Цитата cozzzy @
                      Хде, я вас спрашиваю, оппозиция к исключениям? :ph34r:

                      Ну, лисповские condition — ничего так оппозиция... :)
                        Хых, не холивар а карательная операция какая то...
                          эти твари (возвращаемые значения :) ) у меня много крови выпили, можно уже и покарать :)
                            исключения.

                            относительно С++: исключения в границах модуля, либо сборка всех модулей в одинаковых условиях (т.к. нет стандарта реализации распространения исключений, см.: "Стандарты программирования на С++: 101 правило и рекомендация", Саттер & Александревску, часть 62). А вообще про обработку ошибок (опять же относительно ++) неплохо (имхо) написано в части 72 той же книги, вот название части: "Для уведомления об ошибках следует использовать исключения" )
                              Цитата cozzzy @
                              Хде, я вас спрашиваю, оппозиция к исключениям?
                              Я, конечно, не оппозиция, но больше склоняюсь к кодам возврата. Имею дело с реал-тайм приложениями, отсюда исключения признаю только в инит-тайм, т.к. в ран-тайм исключения обходятся достаточно дорого. В инит-тайм в большинстве случаев даже не исключения нужны, а функции типа SYS_abort.
                              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0333 ]   [ 14 queries used ]   [ Generated: 20.05.24, 04:04 GMT ]