У 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 він розглядає кидок (X) як кидок (...), тому дотримання стандарту не є сильним.
Як ви вважаєте, слід використовувати специфікатори винятків?
Будь ласка, дайте відповідь "так" чи "ні" та вкажіть деякі причини, щоб обґрунтувати свою відповідь.