Как заставить компилятор генерировать ошибку или предупреждение, когда я забываю перехватить исключение - PullRequest
1 голос
/ 08 декабря 2011

Если забыто перехватить исключение, оно вернется во время выполнения или будет обработано определенной функцией обработчика исключений. или я могу обернуть код в main в try catch. Оба будут обрабатывать исключение достойным образом.

Но я хочу обнаружить эту ситуацию на ранней стадии, есть ли способ сделать это.

Ответы [ 3 ]

2 голосов
/ 08 декабря 2011

C ++ (к счастью) не требует, чтобы функции сообщали, какие исключения они могут выдавать. Поэтому, как правило, любая функция может генерировать что-либо. Вы не знаете, и ваш компилятор не знает.

Следовательно, вы должны взять на себя обязанность отследить, какие исключения генерируются откуда и куда они попадают.

0 голосов
/ 15 декабря 2011

Но я хочу обнаружить эту ситуацию на ранней стадии, есть ли способ сделать это.

Если вы хотите обрабатывать ошибки локально, вы не должны использовать исключения.

0 голосов
/ 08 декабря 2011

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

Стандартное решение - убедиться, что все исключения происходят из классов stdexcept, и выловить std::exception или std::runtime_error в соответствующем месте. Это обычно означает место очень высокого уровня, например функция контроллера, которая активировала действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...