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

      Я описал её прямо в том предложении. Если у тебя память как у рыбки и ты не помнишь, что я это писал - есть история сообщений, а предоставленной инфы в прошлом посте более чем достаточно для того, чтобы найти то сообщение. Ради тебя мне это делать лениво.

      Цитата Wound @
      Ты отмазался общими словами

      А это значит, что ты опять соврал.

      Цитата Wound @
      Ну вот я тебе привел выше пример, когда забивание на bad_alloc, приведет к по сути багу.

      С чего бы? Если у тебя в этом сценарии выпал bad_alloc, то это как раз тот случай, когда в js ты совершенно точно не вернёшь ничего.

      Цитата applegame @
      Но как видим, Киля типа подразумевал под этим что-то другое.

      Подозреваю, что он просто сел в лужу и сейчас изо всех сил делает вид, что это не так. Даже интересно, какой ещё выверт родить сумеет :D
        Цитата Wound @
        Цитата D_KEY @
        Это стоит делать и без исключений.

        Можешь показать как в Си это сделать? Там как раз нет исключений, мне бы пригодилось.

        Ну ничего, кроме attribute cleanup и накрученных поверх него макросов, я тебе посоветовать не могу.

        На базе этого делают такого рода хрень даже: libcsptr
        Но я не юзал.
          Цитата applegame @
          При возврате ошибок придется городить точно такое же RAII, ранний return по сути ничем не отличается от throw.

          Ранний return это такой же return как и поздний, разницы абсолютно никакой, для вызывающего кода. :-?
            Цитата Wound @
            Ну если ты в блокноте код набираешь, то да, придется. А если в более менее какой то IDE, хотя бы 2000 года выпуска, то они как правило сами подсвечивают такие вещи. В самом худшем случае можно сочетание клавишь нажать "Go to declaration" и посмотреть.
            Ну если развить эту тему, то современные IDE при наведении мыши краткий кусок из доков выводят, где написано, что именно кидает функция, ну и доки ща модно прямо в комментах писать, так что go to declaration. и читай на здоровье.
            Но это все лирика, а факт в том, что сигнатуры в любом случае недостаточно. Хотя,ЕМНИП в Java нужно явно перечислять все виды исключений, которые может бросить функция. Поправьте, если я ошибаюсь.
            Сообщение отредактировано: applegame -
                Цитата Wound @
                Ранний return это такой же return как и поздний, разницы абсолютно никакой, для вызывающего кода.
                Если ты собрался пробросить ошибку наверх в вызывающем коде, то тебе придется и в нем сделать ранний return с такой же потенциальной утечкой.
                  Цитата D_KEY @
                  На базе этого делают такого рода хрень даже: libcsptr
                  Но я не юзал.

                  А, ну это я встречал, даже юзал.

                  Цитата applegame @
                  Ну если развить эту тему, то современные IDE при наведении мыши краткий кусок из доков выводят, где написано, что именно кидает функция, ну и доки ща модно прямо в комментах писать, так что go to declaration. и читай на здоровье.

                  Но с исключениями не все так очевидно выходит. Если бы IDE выявляла все исключения, которые функция может кинуть и показывала их. Тогда бы тут у кодов возврата шансов не было бы совсем.
                    Цитата applegame @
                    то тебе придется и в нем сделать ранний return с такой же потенциальной утечкой.

                    Или goto cleanup... а, не, Киля категорически против goto, так что лучше не напоминать :lol:
                      Цитата applegame @
                      Если ты собрался пробросить ошибку наверх в вызывающем коде, то тебе придется и в нем сделать ранний return с такой же потенциальной утечкой.

                      Почему с утечкой? Перед возвратом, можно очистить все выделенные до этого ресурсы. Например, на сколько я заметил, по примерам в MSDN, майкрософт применяется подход с метками. Аля goto cleanup:
                      Где идет очистка всех ресурсов и возврат. Правда я не фанат такого подхода. Но на Си я мало писал, в основном там где я писал, фильтры под apache, там были подобия cleanup'ов, котрые выше привел D_KEY.

                      Добавлено
                      Цитата OpenGL @
                      Киля, не бомби. Я, конечно, добрый, но тут есть и другие модеры.

                      Ты себя еще отмодерируй рыбка. Ты оскорбляешь, а мне нельзя?
                        Цитата Wound @
                        Но с исключениями не все так очевидно выходит. Если бы IDE выявляла все исключения, которые функция может кинуть и показывала их. Тогда бы тут у кодов возврата шансов не было бы совсем.
                        С кодами тоже ничего очевидного. Я вот пишу на elixir, где вообще все повально на возвращаемых ошибках. Так вот без доков все равно ничего не поймёшь.
                          Цитата Wound @
                          Ты оскорбляешь, а мне нельзя?

                          Я не вижу в своих постах оскорблений. Считаешь, что я не прав - обращайся к суперам/админам, а не ко мне.

                          Добавлено
                          Цитата applegame @
                          Хотя,ЕМНИП в Java нужно явно перечислять все виды исключений, которые может бросить функция. Поправьте, если я ошибаюсь.

                          От этого подхода отказались уже - решили, что он неудобен.
                            Цитата applegame @
                            С кодами тоже ничего очевидного. Я вот пишу на elixir, где вообще все повально на возвращаемых ошибках. Так вот без доков все равно ничего не поймёшь.

                            Ну если там int'ы возвращаются, или какие нибудь char'ы, строки, то тут конечно без доков ниче не поймешь. В COM'ах всяких наприме всякие HRESULT'ы возвращаются, этих там кодов овер дофига, а каждая функция, естественно не все возвращает, и приходится тоже лезть в доку. Если бы там как то разграничить эти коды, возможно было бы проще.
                              Цитата Wound @
                              Почему с утечкой? Перед возвратом, можно очистить все выделенные до этого ресурсы. Например, на сколько я заметил, по примерам в MSDN, майкрософт применяется подход с метками.
                              Я написал потенциальной утечкой. Если ты задумал вручную чистить ресурсы, то можно и с исключениями обойтись без. RAII, чисти все в catch или если есть finally то в нем, в D можно чистить в scope(exit). RAII это всего лишь способ избежать ручной чистки, применять его удобно и для исключений и для ранних return'ов.
                                Цитата OpenGL @
                                Я не вижу в своих постах оскорблений. Считаешь, что я не прав - обращайся к суперам/админам, а не ко мне.

                                Ну я ж говорил что слепой. :lol:

                                Добавлено
                                Цитата applegame @
                                Я написал потенциальной утечкой. Если ты задумал вручную чистить ресурсы, то можно и с исключениями обойтись без. RAII, чисти все в catch или если есть finally то в нем, в D можно чистить в scope(exit). RAII это всего лишь способ избежать ручной чистки, применять его удобно и для исключений и для ранних return'ов.

                                RAII хороший в С++, в Сях все равно это преврящается в ручной вызов функции очистки. Я то говорил в контексте Си, а не С++.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0651 ]   [ 15 queries used ]   [ Generated: 28.04.24, 14:34 GMT ]