Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обработка исключений отсутствует / 25 сообщений из 97, страница 1 из 4
08.09.2013, 18:30
    #38390438
stuffy.reg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Считается ли дурным тоном в создаваемом проекте не обрабатывать исключения ?

Недавно довелось ознакомиться с процессом разработки одной команды. Делали клиентскую часть, 4 человека, пол года работы. Тим лид строго запретил обрабатывать исключения...
Одному мне это кажется неправильным, или подобное часто практикуется?
...
Рейтинг: 0 / 0
08.09.2013, 19:10
    #38390451
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
stuffy.regСчитается ли дурным тоном в создаваемом проекте не обрабатывать исключения ?

Недавно довелось ознакомиться с процессом разработки одной команды. Делали клиентскую часть, 4 человека, пол года работы. Тим лид строго запретил обрабатывать исключения...
Одному мне это кажется неправильным, или подобное часто практикуется?

Скорее всего ты либо не правильно понял тимлида, либо речь шла об ограничении тех видов исключений, обработка которых зашита в глобальном обработчике исключений и осуществляется централизованно. Сам посуди. Если ты в своем коде перехватил исключение и обработал его нестандартным образом, выведя его на экран с помощью MessageBox, тогда как все остальные ошибки у вас выводятся специальным диалогом с возможностью отправки ошибок в службу поддержи, ясно, что это никогда не будет одобрено тимлидом.
...
Рейтинг: 0 / 0
08.09.2013, 22:48
    #38390535
Обработка исключений отсутствует
Анатолий Широковstuffy.regСчитается ли дурным тоном в создаваемом проекте не обрабатывать исключения ?

Недавно довелось ознакомиться с процессом разработки одной команды. Делали клиентскую часть, 4 человека, пол года работы. Тим лид строго запретил обрабатывать исключения...
Одному мне это кажется неправильным, или подобное часто практикуется?

Скорее всего ты либо не правильно понял тимлида, либо речь шла об ограничении тех видов исключений, обработка которых зашита в глобальном обработчике исключений и осуществляется централизованно. Сам посуди. Если ты в своем коде перехватил исключение и обработал его нестандартным образом, выведя его на экран с помощью MessageBox, тогда как все остальные ошибки у вас выводятся специальным диалогом с возможностью отправки ошибок в службу поддержи, ясно, что это никогда не будет одобрено тимлидом.
Глобальном обработчике это до самого верху стек раскручивают, а как узнают о конкретном месте возникновения исключения?
Не лучше ли самому поймать исключение, вывести на экран, и сделать rethrow с добавлением к строке информации о месте возникновения исключения, или использовать для этого std::throw_with_nested(std::logic_error(std::string(__FILE__) + std::to_string(__LINE__) + __FUNCTION__)); ?
...
Рейтинг: 0 / 0
08.09.2013, 23:42
    #38390548
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Считается ли дурным тоном в создаваемом проекте не обрабатывать исключения ?

Нет, в общем случае. Вообще, в с++ исключения можно вообще не использовать.

Недавно довелось ознакомиться с процессом разработки одной команды. Делали клиентскую часть, 4 человека, пол года работы. Тим лид строго запретил обрабатывать исключения...
Одному мне это кажется неправильным, или подобное часто практикуется?


Не часто, но бывает.
В современном с++ безусловно выглядит странно.
...
Рейтинг: 0 / 0
09.09.2013, 00:12
    #38390554
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
stuffy.regОдному мне это кажется неправильным, или подобное часто практикуется?
Сама по себе задача обработки исключения порождает еще целый
ворох проблем. А именно - как обработать? Игнорировать? Логгировать?
Обернуть в другой тип исключения и передать наверх? e.t.c.
Поэтому иногда лучше ничего не сделать чем "замылить" ошибку,
...
Рейтинг: 0 / 0
09.09.2013, 01:51
    #38390578
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
С исключениями главное - единый подход во всем приложении, иначе будет несопровождаемое месиво.

А вообще это конечно скорее религиозный вопрос, чем технический.
...
Рейтинг: 0 / 0
09.09.2013, 01:59
    #38390579
Обработка исключений отсутствует
maytonstuffy.regОдному мне это кажется неправильным, или подобное часто практикуется?
Сама по себе задача обработки исключения порождает еще целый
ворох проблем. А именно - как обработать? Игнорировать? Логгировать?
Обернуть в другой тип исключения и передать наверх? e.t.c.
Поэтому иногда лучше ничего не сделать чем "замылить" ошибку,
Вообще ничего не делать, даже не выводить и не логировать сообщение исключения, и не реализовывать std::unexpected_handler() ?
...
Рейтинг: 0 / 0
09.09.2013, 02:10
    #38390582
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Мне трудно понять что имел в виду тот ПМ. Но я вижу его месседж в том
чтобы молясь богу не разбить себе голову. Хватает кодов возврата,
errno, GetLastError e.t.c. для решения задачи ? Хватает ? - Пользуйтесь. Для языков и систем
разработки где НЕЛЬЗЯ по другому получить состояние ошибки - использовать
обязательную обработку.
...
Рейтинг: 0 / 0
09.09.2013, 02:12
    #38390583
stuffy.reg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Анатолий Широков, уточнил еще раз. В коде нет связок try-catch. На сервер информация об ошибках не отправляется.
Это клиентская часть он-лайн игры.
Предусмотренно стандартное окно сообщения об ошибке. Используется при парсинге протокола: проверяется наличие некоторых ключей json-a. Причем не всех. Если не нашли то что проверяли - сообщение об ошибке и рестарт игры. Если не нашли и проверки на существование ключа не было - все просто падает.
В игровой механике так же в случае любой ошибки все падает.

Это был мой первый опыт с гемдевом. Может это специфика индустрии и у них часто так принято?
...
Рейтинг: 0 / 0
09.09.2013, 02:19
    #38390584
stuffy.reg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Anatoly MoskovskyС исключениями главное - единый подход во всем приложении, иначе будет несопровождаемое месиво.

А вообще это конечно скорее религиозный вопрос, чем технический.

Да, знаю из бесед, что этого тим лида год назад не взяли в яндекс, проблемы на интервью были как раз с вопросами про обработку исключений.
(* это не сарказм, просто совпадение, я слышал от него самого, что была куча вопросов на эту тему)
...
Рейтинг: 0 / 0
09.09.2013, 07:39
    #38390613
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
stuffy.reg
Это был мой первый опыт с гемдевом. Может это специфика индустрии и у них часто так принято?

Точно нет.
...
Рейтинг: 0 / 0
09.09.2013, 14:40
    #38391033
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
MasterZivstuffy.regЭто был мой первый опыт с гемдевом. Может это специфика индустрии и у них часто так принято?

Точно нет.
Ну я бы так не говорит однозначно.
Во всех игрушках что я играл, периодически происходил вылет на самом интересном месте.
Отсюда вывод - скорее у них принято как раз обратное - не ловить исключения :)
...
Рейтинг: 0 / 0
09.09.2013, 15:06
    #38391089
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Есть еще вариант что по некоторым соображенииям экономят ресурсы.
Ну типа... исключения которые валят в цикле - это нагрузка на вычислительную систему.
Проще проверить return code. Как-то так.
...
Рейтинг: 0 / 0
09.09.2013, 15:14
    #38391103
Обработка исключений отсутствует
maytonЕсть еще вариант что по некоторым соображенииям экономят ресурсы.
Ну типа... исключения которые валят в цикле - это нагрузка на вычислительную систему.
Проще проверить return code. Как-то так.
Ну это у них уже исключение головного мозга :)
Как раз таки основное преимущество исключений над кодом возврата, что код возврата всегда должен проверяться на каждой итерации, а исключение можно ловить один раз на весь цикл:
http://forums.pcsx2.net/Thread-blog-C-exceptions-can-be-an-optimization
...
Рейтинг: 0 / 0
09.09.2013, 16:32
    #38391234
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Наверное есть разные механизмы генерации исключений.
...
Рейтинг: 0 / 0
09.09.2013, 16:51
    #38391272
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Обработка исключений вообще и спецификации исключений, в частности, добавляют накладные расходы времени исполнения, даже если никакие исключения не возникают.
...
Рейтинг: 0 / 0
09.09.2013, 18:34
    #38391399
Обработка исключений отсутствует
Basil A. SidorovОбработка исключений вообще и спецификации исключений, в частности, добавляют накладные расходы времени исполнения, даже если никакие исключения не возникают.
Получение кода возврата, его проверка и условный переход в сумме добавляют больше накладных расходов - пример по ссылке выше.
...
Рейтинг: 0 / 0
09.09.2013, 18:51
    #38391416
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Возможность написать:
Код: sql
1.
2.
3.
4.
5.
while (true) {
...
  if (!someThing()) break;
...
}

не зависит от (не)желания использовать исключения.

P.S. И давно try/catch стал дешевле if-а?
...
Рейтинг: 0 / 0
09.09.2013, 19:34
    #38391451
Обработка исключений отсутствует
Basil A. SidorovВозможность написать:
Код: sql
1.
2.
3.
4.
5.
while (true) {
...
  if (!someThing()) break;
...
}

не зависит от (не)желания использовать исключения.

P.S. И давно try/catch стал дешевле if-а?
Да, сейчас сам проверил чего там пишут по ссылке, в общем случае в 2(MSVC)-4(GCC) раза медленней исключения чем код возврата, по крайней мере на таких простых примерах.
http://ideone.com/rx4qqF
...
Рейтинг: 0 / 0
09.09.2013, 20:36
    #38391492
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Basil A. SidorovОбработка исключений вообще и спецификации исключений, в частности, добавляют накладные расходы времени исполнения, даже если никакие исключения не возникают.


Обработка кодов возвратов также добавляет накладные расходы времени выполнения, даже если ошибок не возникает.
...
Рейтинг: 0 / 0
09.09.2013, 21:05
    #38391507
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
MasterZivBasil A. SidorovОбработка исключений вообще и спецификации исключений, в частности, добавляют накладные расходы времени исполнения, даже если никакие исключения не возникают.
Обработка кодов возвратов также добавляет накладные расходы времени выполнения, даже если ошибок не возникает.

Я бы даже сказал больше. Если взять С++ и специально не извращаться (через throw() у каждой функции), то при использовании кодов возврата компилятор сгенерит и код для поддержки исключений (вдобавок к юзерской обработке кодов возврата). Т.е. для случая "даже если никакие исключения не возникают" коды будут медленнее.
...
Рейтинг: 0 / 0
10.09.2013, 07:05
    #38391654
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Anatoly Moskovsky, а если так?
...
Рейтинг: 0 / 0
10.09.2013, 07:08
    #38391655
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
...
Рейтинг: 0 / 0
10.09.2013, 10:19
    #38391798
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
Anatoly MoskovskyMasterZivпропущено...

Обработка кодов возвратов также добавляет накладные расходы времени выполнения, даже если ошибок не возникает.

Я бы даже сказал больше. Если взять С++ и специально не извращаться (через throw() у каждой функции), то при использовании кодов возврата компилятор сгенерит и код для поддержки исключений (вдобавок к юзерской обработке кодов возврата). Т.е. для случая "даже если никакие исключения не возникают" коды будут медленнее.

Анатолий, полностью отключить исключения — это один флаг компилятора. Кто не любит исключения, кончено, хорошо про этот флаг знают.

Единственно, я совсем не понимаю, как в этом случае будет работать STD, хотя его конечно можно и вообще не использовать...
...
Рейтинг: 0 / 0
10.09.2013, 10:29
    #38391808
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений отсутствует
? http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Exceptions

Я думаю, в такой конторе здоровой как гуголь, существует не один стандарт кодирования. То, что для каких-то проектов исключения могут не подходить, я вполне согласен. Тем не менее, то, что исключения — генеральная линия развития С++ - несомненно.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обработка исключений отсутствует / 25 сообщений из 97, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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