Dlaczego kompilator nie sprawdza wyjątków w C ++?

C ++ zapewnia składnię sprawdzonych wyjątków, na przykład:

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

Jednak kompilator Visual C ++ ich nie sprawdza; flaga rzutu jest po prostu ignorowana. Moim zdaniem powoduje to, że funkcja wyjątku jest bezużyteczna. Więc moje pytanie brzmi:czy istnieje sposób na sprawienie, aby kompilator sprawdzał, czy wyjątki są poprawnie wychwycone / ponownie wywołane? Na przykład wtyczka Visual C ++ lub inny kompilator C ++.

PS. Chcę, aby kompilator sprawdził, czy wyjątki są poprawnie wychwycone, w przeciwnym razie skończysz w sytuacji, w której będziesz musiał złapać każde wywołanie funkcji, które wykonujesz,nawet jeśli wyraźnie stwierdzą, że niczego nie rzucą.

Aktualizacja: kompilator Visual C ++ wyświetla ostrzeżenie podczas wrzucania funkcji oznaczonej przez throw (). To jest świetne, ale niestety, ostrzeżenie nie pojawia się, gdy wywołujesz podprogram, który może rzucić. Na przykład:

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

questionAnswers(6)

yourAnswerToTheQuestion