В C ++ вы можете указать, что функция может или не может генерировать исключение, используя спецификатор исключения. Например:
void foo() throw(); // guaranteed not to throw an exception
void bar() throw(int); // may throw an exception of type int
void baz() throw(...); // may throw an exception of some unspecified type
Я сомневаюсь в том, чтобы использовать их на самом деле по следующим причинам:
- Компилятор на самом деле не применяет спецификаторы исключений каким-либо строгим образом, поэтому преимущества невелики. В идеале вы хотели бы получить ошибку компиляции.
- Если функция нарушает спецификатор исключения, я думаю, что стандартным поведением является завершение программы.
- В VS.Net он обрабатывает throw (X) как throw (...), поэтому соблюдение стандарта не является строгим.
Как вы думаете, следует ли использовать спецификаторы исключений?
Пожалуйста, ответьте «да» или «нет» и укажите причины, чтобы обосновать свой ответ.