Если у вас есть общедоступная функция, которая может генерировать исключение, которое использует другие (частные или общедоступные) вспомогательные функции, которые также могут генерировать исключения, я думаю, вы должны документировать, какие исключения может публиковать публичная функция, и это включает исключения, вызванные вспомогательными функциями.
Что-то вроде этого (используя Doxygen):
/**
* @throw Exception ...
* @throw ExceptionThrownByHelper ...
* @throw ExceptionThrownByHelpersHelper ...
*/
void theFunction()
{
helperWhichMayThrowException();
}
и helperWhichMayThrowException()
также вызывает другие функции, которые могут вызывать исключения.
Для этого вы можете:
- рекурсивно выполнять все функции
theFunction()
вызовов и искать исключения, отложенные этой функцией. Это большая работа, и вы можете забыть о каком-либо исключении документа, когда вы добавляете исключение в помощника. - поймать все исключения, создаваемые помощниками в
theFunction()
, и преобразовать их, чтобы вы были уверены, что выбраны только те исключения, которые вы указали. Но зачем использовать исключения? - не волнуйтесь об исключениях, вызванных вспомогательными функциями, но затем вы не можете удалить все исключения, потому что не знаете, какие исключения могут быть выбраны публичной функцией
- У вас есть инструмент, который (полу) автоматически перечисляет все исключения, создаваемые помощниками и т.д. Я просмотрел документацию Doxygen, но не нашел способ сделать это.
Я хотел бы использовать опцию 4, но пока не нашел хорошего решения, возможно, это возможно с Doxygen? Или, может быть, я просто хочу документировать много???
edit: Возможно, это не совсем понятно, но я ищу простой способ документировать все исключения (желательно с помощью Doxygen), которые функция может бросать без ручной проверки всех вспомогательных функций. Легкий способ включает "не документировать все исключения" или "улавливать и преобразовывать все исключения в theFunction()
"