¿Por qué las excepciones en C ++ no son verificadas por el compilador?

C ++ proporciona una sintaxis para las excepciones comprobadas, por ejemplo:

<code>void G() throw(Exception);
void f() throw();
</code>

Sin embargo, el compilador de Visual C ++ no los comprueba; la bandera de lanzamiento es simplemente ignorada. En mi opinión, esto hace que la característica de excepción sea inutilizable. Así que mi pregunta es:¿hay alguna manera de hacer que el compilador verifique si las excepciones se capturan o se vuelven a generar correctamente? Por ejemplo, un complemento de Visual C ++ o un compilador de C ++ diferente.

PD. Quiero que el compilador compruebe si las excepciones se detectan correctamente, de lo contrario, terminará en una situación en la que tendrá que poner un retén alrededor de cada función que realice,incluso si declaran explícitamente que no tirarán nada.

Actualizar: el compilador de Visual C ++ muestra una advertencia al lanzar una función marcada con throw (). Esto es genial, pero lamentablemente, la advertencia no aparece cuando llama a una subrutina que puede lanzar. Por ejemplo:

<code>void f() throw(int) { throw int(13); }
void h() throw() { g(); } //no warning here!
</code>

Respuestas a la pregunta(6)

Su respuesta a la pregunta