Есть код, который можно во многих случаях упростить и ускорить, если не обрабатывать исключения. Если же кому-то нужно сообщать об ошибках, он должен пользоваться другим "API", которое позволяет обрабатывать исключения.
Так вот, было бы идеально, если бы об этом всём сообщал компилятор...
Не волнуйся, случайно по любому не получится, ибо в любом случае задумаешься, прежде чем отдавать такие большие деньги за софтину (имеется ввиду скока стОит наша прога). :-)
P.S. Вообще, конечно, надо бы это место на C без плюсов сделать... Но это нереально.
Меня вот ещё какая мысль гложет. Ведь есть же возможность указать для функции какие типы исключений она может вызвать. Почему нет опции у компилятора, которая бы говорила, что из функции с throw() вызывается функция с более длинным списком исключений?
Вы не понимаете. Я хочу исключить наш собственный код, который занимается обработкой исключений. Он вызывается много раз и вносит оверхед, даже если никаких исключений не происходит. Просто выкинуть его нельзя, так как в общем случае исключения могут происходить. Однако для большого числа случаев его на самом деле можно выкинуть. Я его и выкину, но хочу иметь страховку на стадии разработки, что в режиме без обработки исключений у меня не вызывается код с исключениями.
double add( double a, double b ) { return a + b; }
не генерирует исключений. Тем не менее такого рода код приходится сейчас вызывать с обработкой исключений. Я перепишу прогу так, что обработчики вызываться не будут, но у меня нет никакой гарантии, что какой-то другой программист не вызовет по ошибке код с исключениями. А глюк во время выполнения словит заказчик, как это всегда бывает.
В общем, я подумал, и решил не выкидывать код обработки исключений. Получается, что накладные расходы в случае без исключений сводятся к проверке одной логической переменной, а это не критично.