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