我目前正在试图找到一个属性是否已正确设置为bool值,它应该是这样的......
public void RunBusinessRule(MyCustomType customType) { try { if (customType.CustomBoolProperty == true) { DoSomething(); } else { throw new Exception("This is obviously false or possibly null lets throw up an error."); } } catch(Exception) { throw; } }
现在为我抛出这个错误的处理是我正在使用微软的源代码分析它给我一个错误,说明"CA2201:Microsoft.Usage:Object.RunBusinessRule(MyCustomType)创建了一个'Exception'类型的异常,这是一种异常类型,具体程度不够,用户代码永远不应该引发.如果抛出此异常实例,请使用其他异常类型.
Soooo我应该抛出什么异常,这对于Microsoft ..来说是特定的,因为在我自己的应用程序的逻辑处理和我想"抛出"时抛出错误的情况.
ArgumentException InvalidOperationException FormatException
传递的论点并不好.
你应该抛出一个例外吗?
具有错误的布尔值并不是特殊情况.
编辑
我原来的答案有点简洁,所以我会详细说明......
从您的示例中,不清楚实际对象,属性和方法代表什么.如果没有这些信息,很难说出哪种类型的例外(如果有的话)是合适的.
例如,我认为以下是对异常的完全有效使用(并且您的真实代码可能看起来像这样,但我们无法从您的示例中得知):
public void UpdateMyCustomType(MyCustomType customType) { if (!customType.IsUpdateable) throw new InvalidOperationException("Object is not updateable."); // customType is updateable, so let's update it }
但是在一般情况下,如果不了解你的域模型,我会说像这样的东西(一个错误的布尔值)并不是特别的.
创建自己的异常扩展Exception
.例如:RuleViolationException