С++ предоставляет синтаксис проверенных исключений, например:
void G() throw(Exception);
void f() throw();
Однако компилятор Visual С++ не проверяет их; флаг throw просто игнорируется. По моему мнению, это исключает возможность использования исключения. Итак, мой вопрос: есть ли способ заставить компилятор проверить, правильно ли пойманы/восстановлены исключения? Например, плагин Visual С++ или другой компилятор С++.
PS. Я хочу, чтобы компилятор проверял, правильно ли пойманы исключения, иначе вы окажетесь в ситуации, когда вам нужно поместить catch вокруг каждого вызываемого вами вызова функции, даже если они явно заявляют, что ничего не будут бросать.
Обновление: компилятор Visual С++ показывает предупреждение при бросании функции, помеченной throw(). Это здорово, но, к сожалению, предупреждение не появляется, когда вы вызываете подпрограмму, которая может быть брошена. Например:
void f() throw(int) { throw int(13); }
void h() throw() { g(); } //no warning here!