На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (37) « Первая ... 34 35 [36] 37   ( Перейти к последнему сообщению )  
> C vs C++ , Не опять а снова
    Цитата Qraizer @
    __attribute__(cleanup) не всесилен. Локальную размотку он делает, а вот глобальную прощёлкивает

    Насколько я помню, деструкторы тоже при longjmp тебе никто не обещает вызвать. Или я ошибаюсь?
      Не ошибаешься.
        Стандарт не гарантирует. И мне всегда было жаль этго. Впрочем, объяснение, почему так, на поверхности. <setjmp> является интерфейсом из RTL языка C, поэтому к нему нет и быть не может никаких требований учитывать что-то там, не относящееся к C. Формально libc.a может просто браться и линковаться c программой C++, иначе всю библиотеку C пришлось бы переописывать в Стандарте Плюсов, из-за чего фактически одна сущность существовала бы в двух ипостасях, да ещё и по-разному реализованной. И по большому счёту тогда уж надо было бы отрефакторить многие функции. Главным образом небезопасные к многопоточности и безопасности.
        Но WinAPI не только обещает, что всё должно разматываться по-честному, тут просто нет выбора. SEH ответственна за любую размотку стека вызовов, это механизм ОСи, а не языка, так что longjmp() обязан выполняться через GlobalUnwind(). И так как C++EH строиться на базе SEH, то в Плюсах пришлось бы прилагать усилия, чтобы longjmp() работал иначе, нежели со всеми гарантиями.
          Ха. Три раза. Просматриваю срач define vs template, на который сослался недавно Qraizer. Зацените :D

          Цитата Fester @
          (да блин, даже сейчас коллеги все еще боятся использовать исключения! и стараются вернуть код ошибки хотя пишут уже исключительно на C#

          Цитата KILLER @
          А чего бояться? Боятся что исключение их укусит? Или они просто матерые сишники, которые по привычке в придачу пишут все в одном классе, не используют наследование, и все методы у них статические, и то! Только из за того, что в C# нельзя написать функцию вне класса? Может им на пенсию пора?

          Цитата Fester @
          Боятся, что исключение не будет обработано и это приведет к крэшу

          Цитата KILLER @
          А это что плохо? Если у тебя произошло исключение - это значит код, который его кинул - не смог справится с ошибкой. Коды возврата тебе тут не помогут. Если ты боишься что где то не обработаешь исключение, то почему ты не боишься того, что где то ты не проверишь возвращаемое значение? И все равно это приведет к крэшу, и хорошо - если к крэшу, так хоть упало - и сразу все понятно. А если будет не крэшь а произойдет операция - которая в принципе не должна произойти? По моему это хуже крэша. ... С кодами возврата можно отгребсти куда больше проблем. И таких ошибок, что catch(...) тебе сказкой покажется. Там хоть бряк можно поставить, и сразу туда вылететь в этот catch.


          Цитата KILLER @
          Цитата Fester @
          Крэш - это полный отказ, в то время как какая-то незавершенная или неправильная операция совсем не означает, что приложение больше неработоспособно.
          Это плохо, но не смертельно. А вот когда у тебя программа работает с некорректными данными, а ты еще об этом даже не догадываешься - вот тут будет полнейшая жопа. Ты просто можешь реально влететь в такую жопу. Что потом забудешь return, и будешь вместо него везде писать throw.


          Цитата KILLER @
          Цитата Fester @
          потому что исключение может прилететь откуда угодно, а все возвращаемые значения заранее известны.
          Блин, я не понимаю как вы программируете? Ты юзаешь функцию и незнаешь - кидает она тебе исключение или нет? или что? Да откуда бы оно не прилетело - ты можешь открыть дамп и посмотреть стек, и сразу понять - что и в каком месте у тебя вылетело.

          :lool:
            Парни, вы уж меня извините за тупизну - но "разматывание" длинных переходов я отношу (лично я) к лютоой дичи
            В том числе к криминальной.
              Цитата OpenGL @
              Ха. Три раза. Просматриваю срач define vs template, на который сослался недавно Qraizer. Зацените :D

              В очередной раз убеждаюсь в твоем неумении читать посты :lol: Я ж тут в этой теме нигде не топил ни за исключения, ни за коды возвратов. Я об этом даже прямо писал!!! А доколебался я, до твоей фразы, в которой ты написал, что то типа: "запомнить какие исключения кидает функция, не сложнее, чем проверить код возврата". Которое ИМХО, в корне не верно. И даже предложил тебе перечислить какие исключения кидает некая функция, которую ты в первый раз видишь глазами. А ты в очередной раз признал что не читаешь и перекручиваешь смысл обсуждения так, как тебе хочется. Причем я тебе об этом писал неоднократно. :whistle:
              Сообщение отредактировано: Wound -
                Разве я написал, что ты за/против исключений? :D
                  Цитата OpenGL @
                  Разве я написал, что ты за/против исключений?

                  Ну а к чему ты тогда привел то, что выше? Очевидно же, что там спор о "коды возврата vs исключения". Как понимать твой смищной смайл? Смех без причины, признак сам знаешь чего? :rolleyes:
                  Сообщение отредактировано: Wound -
                    Цитата Wound @
                    Ну а к чему ты тогда привел то, что выше?

                    Просто поржать. Ты возражаешь? :D
                      Цитата OpenGL @
                      Просто поржать. Ты возражаешь?

                      С чего конкретно?
                        Киля, расслабься. Если ты не видишь ничего смешного - сочувствую, поскольку объяснять я ничего не намерен :D
                          Цитата JoeUser @
                          Парни, вы уж меня извините за тупизну - но "разматывание" длинных переходов я отношу (лично я) к лютоой дичи
                          Пиши структурные аналоги, если хочется в гамаке постоять. Никто ж не заставляет исключаться.
                            Цитата Qraizer @
                            Пиши структурные аналоги, если хочется в гамаке постоять. Никто ж не заставляет исключаться.

                            В том то и дело - я этого никогда не пользовал. Ди и никогда к этому и не претендовал! Локально - это естественно, глобально - дичь. Именно поэтому я и апеллирую к тому, что "Локальную размотку он делает, а вот глобальную прощёлкивает" - есть левое утверждение. Которое ваще без берегов. И его нужно рассчтрелять.
                              Цитата Wound @
                              С чего конкретно?
                              Просто ты тогда спорил с аргументами в точности совпадающими с теми, которые приводишь сейчас. Это и правда смешно. :lol:
                                OpenGL, наверное можно было не прямые цитаты давать, а отвечать на посты Кили его же постами :)

                                Но вообще если серьезно, то времени не так и мало прошло, человек мог поменять мнение.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (37) « Первая ... 34 35 [36] 37 


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0954 ]   [ 15 queries used ]   [ Generated: 29.03.24, 11:58 GMT ]