我一直在考虑这个问题很长时间(实际上是几年)并且在C ++中搜索处理异常的最佳方法。所以我想到了工具,它可以帮助我,所以我想问一下这个工具是否存在(我不能谷歌)。
这个工具将解析C ++源代码(包括头文件和源代码),并用异常信息填充类似doxygen的注释(最好扩展我已经写过的关于方法本身的注释)。对于每个方法,异常列表将从代码生成 - 从每次出现“throw SomeException;”命令,从被调用函数列表(谨防递归)和已知命令可能抛出异常(目前,我只能使用new new)。所以我可以跟踪所有异常,看看我是否忘记管理来自其他模块的异常,看看是否有可能从析构函数中抛出异常(禁止AFAIK)。
或者我可以使用类似的工具,不会自动填写doxygen评论,但至少警告我没有评论。类似于我运行doxygen文档生成器时,我忘了注释一个输入变量,并且生成器警告我这个。
那么,有这样的工具吗?如果没有,是否有非常简单易用的库解析C ++代码,所以我可以轻松地为自己实现它?
示例:
//// Example.h ////
/**
* Does almost nothing.
*/
void foo1();
/**
* Generates some error.
*/
void foo2();
//// Example.cpp ////
#include "Example.h"
void foo1()
{
foo2();
}
void foo2()
{
throw MyException();
}
这会:
将“@throw MyException”行添加到foo1()注释。
发出警告:文件中的“foo1()...行...:抛出MyException,但不在评论中!”
我知道C ++语言提供了可能抛出异常的可能性,问题是在编译时没有检查,而是在运行时。我需要处理这种情况(如果我没记错的话,std ::意外)。
如果需要手动运行此工具(如doxygen),而不是每次编译都不是问题。