powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обработка исключений отсутствует
22 сообщений из 97, страница 4 из 4
Обработка исключений отсутствует
    #38393714
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stuffy.reg...не обрабатывать исключения ? ...

сама по себе обработка исключений - инструмент.
юзать или не юзать, как юзать, где юзать - эти вопросы очень сильно вплетены в область решаемых задач, общим подходам программирования в данной конторе, архитектурному вопросу.

помимо самого инструментария, при его применении необходимо решить кучу вспомогательных вопросов. как правило народ это либо не понимает(представляет как можно вытащить все плюсы :) не те плюсы), либо лениться, либо нет сил и средств на проработку этих вопросов.

из своего опыта могу сказать, что глубоко проработанная концепция создания-ловли-обработки-разборки-диспетчирезации-делегации исключений _резко_ повышает надёжность всего продукта в целом.

всё остальное - от лукавого.
удачи вам
(круглый)
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393738
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное исходник С++ бесполезно рассматривать в вакууме. Нужно
какое-то code convention. Думаю это code convention и имел в виду PM.
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393807
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Ну понакидали кучу вариантов. Но, возвращаясь к изначальному вопросу, ни в одном из этих вариантов почему-то нет явной обработки исключений :)
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393813
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
а, не, в одном есть:
Код: plaintext
1.
2.
3.
  } catch(...) {
    return false;
  }

и это ужас-ужас-ужас... так нельзя...
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393843
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?Ну понакидали кучу вариантов. Но, возвращаясь к изначальному вопросу, ни в одном из этих вариантов почему-то нет явной обработки исключений :)
Так явная обработка не нужна.
Точнее она нужна, но не в этом низкоуровневом коде.
Пока не будет понимания что исключения не нужно обрабатывать тут же, вам так и будет казаться что от них одни проблемы :)
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393866
?а, не, в одном есть:
Код: plaintext
1.
2.
3.
  } catch(...) {
    return false;
  }

и это ужас-ужас-ужас... так нельзя...
По вашей ссылке всё ещё в разы хуже.
В этом примере больше и не нужно, а у вас просто необоснованный страх перед неизвестным для вас механизмом исключений.
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393944
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Проблема в поддержке чужого кода.
Ну вот есть некая программа, устанавливается как сервис, типа должна всегда работать, нельзя чтобы упала. Ну и вставили разработчики там "чтобы не упала" catch(...){}. Когда из-за утечки она начала кидать bad_alloc, перехватывать его и пытаться продолжать работать... да лучше бы она упала.
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393956
?Проблема в поддержке чужого кода.
Ну вот есть некая программа, устанавливается как сервис, типа должна всегда работать, нельзя чтобы упала. Ну и вставили разработчики там "чтобы не упала" catch(...){}. Когда из-за утечки она начала кидать bad_alloc, перехватывать его и пытаться продолжать работать... да лучше бы она упала.
Чего вы там выдумываете? Приведите пример вашей правильной реализации на C++ этого примера с кодами возврата.
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393965
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щас читаю Scala Хорстмана. Интересно он там про checked Exceptions написал. Чуть позже отквотирую.
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393973
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Приведите примерЧего вы там выдумываете? Приведите пример вашей правильной реализации на C++ этого примера с кодами возврата.
Да причем тут коды возврата? Нельзя делать catch(...) без перевыбрасывания исключения. То есть эту конструкцию можно применять только в контексте
Код: plaintext
1.
catch(...) { rollback(); throw; }
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393978
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Искать баги в чужом коде, использующем исключения, сложнее, чем в коде, не использующем исключения... Это кто-то будет оспаривать?
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38393998
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot MasterZiv]Anatoly MoskovskyПро отключенные исключения.

Так если гугловцы не используют исключения, они должны их выключать при сборке, либо быть готовым ко всему, что у них записано в CONS.

вы непоняли что написано - они не используют исключения для управления логикой приложения как это сделано в жабе и шарпе.

И это правильно - ибо при исключении в винде происходит first chance exception и отлаживать потом такое приложение в windbg становится невозможным из-за обилия исключений
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38394031
?Искать баги в чужом коде, использующем исключения, сложнее, чем в коде, не использующем исключения... Это кто-то будет оспаривать?
В вашем коде да.
?Приведите примерЧего вы там выдумываете? Приведите пример вашей правильной реализации на C++ этого примера с кодами возврата.
Да причем тут коды возврата? Нельзя делать catch(...) без перевыбрасывания исключения . То есть эту конструкцию можно применять только в контексте
Код: plaintext
1.
catch(...) { rollback(); throw; }


И что же в моем примере должен делать rollback() и почему я не могу вернуться по флагу(коду) возврата return false - неужели использовать код возврата это так ужасно?
Вы свой пример кода приведите и вам сразу станет очевидно какую чушь вы несете :)
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38394208
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsikвы непоняли что написано - они не используют исключения для управления логикой приложения как это сделано в жабе и шарпе.

Думаю, это вы не поняли. Исключения как концепция не предполагает вообще управление логикой.
В джаве и шарпе тоже никто не использует исключения для управления логикой.
Вернее использовать-то их можно (как и в С++), но те, кто используют - это те же кто потом говорит, что исключения хуже чем коды возврата.
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38394209
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?Искать баги в чужом коде, использующем исключения, сложнее, чем в коде, не использующем исключения... Это кто-то будет оспаривать?
Да. Оспариваем. :)
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38394237
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyLepsikвы непоняли что написано - они не используют исключения для управления логикой приложения как это сделано в жабе и шарпе.

Думаю, это вы не поняли. Исключения как концепция не предполагает вообще управление логикой.


похоже что английский для вас не родной, но я таки дам вам статью где таки да критикуют это - http://www.ibm.com/developerworks/java/library/j-jtp05254/index.html

И это часть концепции девелопмента в жабе и С# даже в крупных компаниях когда кидают исключение не только вместо кода ошибки но для управления логики.

пример - catching NoSuchElementException when calling Iterator.next() instead of first checking Iterator.hasNext()

и такого кода я за годы существования C# и java я разгреб тонны и вы будете мне сказки рассказывать

вот вам пример из учебника по жабе

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public void readPreferences(String filename)
    throws IllegalArgumentException
{
    if (filename == null)
    {
        throw new IllegalArgumentException
                            ("filename is null");
    }  //if
    
    //...perform other operations...
    
    InputStream in = new FileInputStream(filename);
    
    //...read the preferences file...
}



https://today.java.net/pub/a/today/2003/12/04/exceptions.html


Пример для С++: MSSQL 2000 под отладчиком сыпет тонны first chance exceptions по любому запросу и при старте, к счастью, начиная с MSSQL2005 они этот порочный путь оставили.
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38394526
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky?Искать баги в чужом коде, использующем исключения, сложнее, чем в коде, не использующем исключения... Это кто-то будет оспаривать?
Да. Оспариваем. :)

Я бы тоже поспорил.
С исключениями код проще, легче читается, проще понимается.
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38394539
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsik,

авторИ это часть концепции девелопмента в жабе и С# даже в крупных компаниях когда кидают исключение не только вместо кода ошибки но для управления логики.

Использование исключений для реализации логики -- это на столько плохо, что вообще не обсуждается.
С этим никто не спорит.

Но там было чётко написано (перевожу на русский) -- "Мы не используем исключения".

Не используем -- значит, как минимум, они не кидаются, не обрабатываются и не ловятся.

Если расширить толкование, это может значить три вещи (как я понимаю).

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

Они не используют исключения в своём коде, но в компиляторе исключения включены и библиотеки, использующие исключения, используются. (странный случай).

Они не используют исключения в своём коде, в компиляторе исключения включены и библиотеки, использующие исключения, искпользуются. В каждом приложении наверху пишется стек обработки исключений, они ловятся и как-то обрабатываются.


На самом деле в реальности либо 1, либо 3, 2-й сценарий нереальный.
Ну а если они ловят искл. наверху, то должны будут ловить иногда и в других местах, локальных. Это уже неиспользванием исключений не назвать.
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38394598
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LepsikNoSuchElementException IllegalArgumentException
Это два примера, когда как раз к логике исключения не имеют отношения.
Это обычная защита от дурака. В первом случае дурак не проверил что итератор завершен и продолжает его использовать, а во втором - передал в функцию левые аргументы.
Это не элементы логики, а именно исключительная ситуация.

Причем заметьте, что сама джава не заставляет вас использовать например NoSuchElementException для проверки итератора - у вас есть hasMoreElements hasNext
Это кто-то слишком умный у себя решил вместо if применить catch, а вы почему-то именно к джаве претензии предъявляте.

Lepsikдаже в крупных компаниях
В крупных компаниях процент дураков такой же как и в мелких. А абсолютном значении - их гораздо больше :)
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38394687
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это зависит от специфики проекта. Код, откомпилированный без поддержки исключений, более компактен. Если это embedded-задачи, то там это может быть важно. В этом случае их нельзя ни бросать, ни обрабатывать.
Может, например, у них в планах шить код в железку низкоресурсную, поэтому они заблаговременно к этому готовятся.

что касается обычных задач, где ресурсов достаточно... Я вот замечал, что даже в java даже в распространенных либах иногда встречаются "лишние" обработки исключений, которые только мешают. Может у них там разработка так поставлена, что вам просто это делать не надо. Исключения обрабатываются на том уровне, где известно что с ними делать. Но некоторые особо упоротые везде понаставляют try-catch c последующим rethrow и потом сиди их выковыривай.

я бы на вашем месте спроил у тимлида че это он так. Наверняка на это есть причина.
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38394985
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok...embedded-задачи, то там...

...Исключения обрабатываются на том уровне, где известно что с ними делать. Но некоторые особо упоротые везде понаставляют try-catch c последующим rethrow и потом сиди их выковыривай.....

в embedded - редко юзаются плюсы. как правило си и азм. само использования плюсов - не всегда там целесообразно. но если юзается - то имхо не юзать эксепшены - глупо. как уже прозвучало - с ними проще, читабельней, надёжней.

вы апсолютно правы по поводу где обрабатываются эксепшены....бла-бла-бла... но как я уже сказал выше - это уже идеология, архитектура. а сами эксепшены - это механизм, инструмент.

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

(круглый)
...
Рейтинг: 0 / 0
Обработка исключений отсутствует
    #38395176
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда в деструкторах хочется совершать действия не вызывающие обратной связи.
Ну толкнуть .close для всех объектов connection, files, handles e.t.c. Что там
он выбросит- пофиг. Это уже не важно. Это завершающие действия, фидбэк
по которым неинтересен. Закрыт хендл и леший с ним.
...
Рейтинг: 0 / 0
22 сообщений из 97, страница 4 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обработка исключений отсутствует
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]