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>