是否有一个标准的FxCop规则可以在不设置InnerException的情况下检测抛出新异常

本文关键字:检测 情况下 新异常 异常 InnerException 设置 FxCop 标准 有一个 规则 是否 | 更新日期: 2023-09-27 18:25:42

我们(相当大的)代码库有以下几种结构:

try {
    DoSomething();
}
catch (Exception e) {
    CleanUp();
    throw new MoreSpecificException();
}

我想确保在大多数情况下,我们都会抛出一个设置了InnerException的新异常。

是否有标准的FxCop规则可以在不设置InnerException的情况下检测抛出新异常?我的研究(谷歌搜索)表明不存在这样的规则。

如果没有,如何创建这样的规则?(我以前从未创建过自定义FxCop规则)。

我也看了一下Gendarme工具,但在那里找不到我需要的东西。

FxCop规则由SonarQube,BTW运行。

是否有一个标准的FxCop规则可以在不设置InnerException的情况下检测抛出新异常

是的,这在FxCop中是可能的。创建自定义规则的指南可以http://www.binarycoder.net/fxcop/index.html.

FWIW,我建议创建一个"不吃异常"规则,将原始异常作为内部异常抛出一个新异常,这是该规则识别的"不吃"模式之一。这通常比"每个抛出异常都必须有一个内部异常规则"更有用,也可以避免后一个规则可能出现的大量误报。