我们的(非常大的)代码库有一些这样的结构:
try {
DoSomething();
}
catch (Exception e) {
CleanUp();
throw new MoreSpecificException();
}
我想确保在大多数情况下设置InnerException时抛出一个新的异常。
是否有标准的FxCop规则检测到抛出新异常而不设置InnerException?我的研究(谷歌搜索)表明不存在这样的规则。
如果没有,如何制定这样的规则? (我以前从未创建过自定义FxCop规则)。
我也看过Gendarme tool,但找不到我需要的东西。
FxCop规则由SonarQube,BTW运行。
答案 0 :(得分:1)
是的,这可以通过FxCop实现。创建自定义规则的指南可以http://www.binarycoder.net/fxcop/index.html。
FWIW,我建议创建一个“不要吃异常”的规则,抛出一个新的异常,将原作为内部异常,作为规则识别的“不吃”模式之一。这通常比“每个抛出异常必须具有内部异常规则”更有用,并且避免使用后一规则可能存在大量误报。