Как мне узнать точный тип исключения?

#c #exception #mfc #exception-specification

#c #исключение #mfc #исключение-спецификация

Вопрос:

Мы используем CDynamicAccessor which наследует from CAccessorBase . Функция MoveNext выдаст

HRESULT MoveNext() throw()

но без указания типа исключения. Как мне это узнать?

Ответ №1:

Нет, throw() означает, что функция объявлена так, чтобы не создавать никаких исключений.

Обратите внимание, что он устарел (и удален в C 20); мы можем использовать noexcept (или noexcept(true) ) начиная с C 11.

Комментарии:

1. Это то, что сбило меня с толку. Спасибо StoryTeller за разъяснение.

2. О боже… Но на самом деле он выдал. Должно быть несколько поврежденных записей, при выполнении MoveNext произошел сбой. Я буду копать дальше.

3. @Zhang О поведении, когда функция выдает исключение, не указанное в спецификации исключения, смотрите здесь .