Я работаю над библиотекой, которая генерирует отчеты об устройствах. Функция члена generate_report (const std::string& no)
может выйти из строя по различным причинам:
- неверный отчет
- неверное состояние (
report_generator
- FSM) - неактивное устройство
- ошибка при создании отчета
Какой механизм обработки ошибок лучше всего подходит для этих ошибок?
- просто верните
true
илиfalse
- код ошибки возврата
- assert и log
- throw exception (s)
- любая комбинация указанных выше
Некоторая контекстная информация: обычный рабочий процесс следующий. Пользователь активирует устройства, выбирает отчет из списка и нажимает "генерировать".
EDIT: Спасибо за ответы до сих пор! Для меня теперь ясно, когда использовать утверждения и когда делать обработку ошибок. Что касается обработки ошибок, то коды ошибок и исключения имеют как плюсы, так и минусы. Я думаю, что я исхожу за исключения (и создаю четыре класса для вышеупомянутых ошибок), но я еще не уверен. Я всегда думал об исключениях из "неожиданных ситуаций". Недействительный отчет no не является неожиданным. Любой совет?:)