LINUX.ORG.RU

Ответ на: комментарий от wfrr

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

Так вот, было бы идеально, если бы об этом всём сообщал компилятор...

yz
() автор топика

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

anarquista ★★★★★
()
Ответ на: комментарий от yz

Хотя, конечно, мёртвому припарка. Ибо исключения изнутри вызванных функций уже не отследить.

Может тогда ворнинг какой-нибуть от компилятора можно получить?

yz
() автор топика
Ответ на: комментарий от yz

>Есть код, который можно во многих случаях упростить и ускорить, если не обрабатывать исключения

Скажи, что вы пишите, чтобы я случайно это не установил.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

Не волнуйся, случайно по любому не получится, ибо в любом случае задумаешься, прежде чем отдавать такие большие деньги за софтину (имеется ввиду скока стОит наша прога). :-)

P.S. Вообще, конечно, надо бы это место на C без плюсов сделать... Но это нереально.

yz
() автор топика

g++ -fno-exceptions …

arsi ★★★★★
()
Ответ на: комментарий от summatus

Да, уже сам нашёл. Спасибо, всё равно.

Меня вот ещё какая мысль гложет. Ведь есть же возможность указать для функции какие типы исключений она может вызвать. Почему нет опции у компилятора, которая бы говорила, что из функции с throw() вызывается функция с более длинным списком исключений?

yz
() автор топика
Ответ на: комментарий от anarquista

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

Это после этого программы на Windows начинают непонятно себя вести и втихую выжирать память как свинья помои?

iZEN ★★★★★
()

Лучше запретить программистам писать на C++. Нет, серьезно.

guest-3484-2009
()
Ответ на: комментарий от Reset

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

yz
() автор топика
Ответ на: комментарий от Reset

как-как! например

double add( double a, double b ) { return a + b; }

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

yz
() автор топика
Ответ на: комментарий от placement_new

В своём коде знаю. Собственно, выше я привёл почти реальный пример кода.

yz
() автор топика
Ответ на: комментарий от yz

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

Reset ★★★★★
()

Пишешь хук на коммит, который проверяет наличие throw и пишет письмо менеджеру: "Уволить".

svu ★★★★★
()
Ответ на: комментарий от placement_new

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

yz
() автор топика

Потом программисты сделают

#define моя_работа дерьмо

sseREGa
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.