No C ++, você pode especificar que uma função pode ou não lançar uma exceção usando um especificador de exceção. Por exemplo:
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
Eu tenho dúvidas sobre realmente usá-los devido ao seguinte:
- O compilador não aplica os especificadores de exceção de maneira rigorosa, portanto os benefícios não são grandes. Idealmente, você gostaria de receber um erro de compilação.
- Se uma função viola um especificador de exceção, acho que o comportamento padrão é finalizar o programa.
- No VS.Net, trata throw (X) como throw (...), portanto, a adesão ao padrão não é forte.
Você acha que especificadores de exceção devem ser usados?
Por favor, responda com "sim" ou "não" e forneça alguns motivos para justificar sua resposta.