C ++ не поддерживает объявления ограничительных исключений в стиле Java и не может сделать это по ряду причин. Ваш компилятор не может и не предупредит вас об исключениях, которые не были перехвачены. Спецификации C ++ throw () служат для другой цели (или, возможно, на данный момент вообще не используются).
Стандартное решение - убедиться, что все исключения происходят из классов stdexcept
, и выловить std::exception
или std::runtime_error
в соответствующем месте. Это обычно означает место очень высокого уровня, например функция контроллера, которая активировала действие.