我有一些代码会抛出异常,如下所示。
if (jobFinished)
{
...
} else
{
throw new Exception("The server Error ...")
}
它编译/运行没有问题,但是当我运行StyleCop时,我收到此错误消息,说Exception不是特定的。
Error 10 CA2201 : Microsoft.Usage : Function(string, DirectoryInfo, string, string, string, out string)'
creates an exception of type 'Exception', an exception type that is not sufficiently
specific and should never be raised by user code. If this exception instance might be
thrown, use a different exception type.
我只是想在遇到一些错误条件时抛出错误。如何制作足够具体的例外?
答案 0 :(得分:5)
抛出InvalidOperationException
。
尽管微软过去在异常处理上并不一致,但现在是Best Practices for Handling Exceptions。
过去建议您创建自己的例外,并从ApplicationException
派生,但现在您应该从Exception
派生。
如果您不需要在方法中区分不同类型的故障,那么InvalidOperationException
就足够了。否则,实现自己的Exception
类派生的异常类。
以下是实施自定义例外的准则:Designing Custom Exceptions
答案 1 :(得分:0)
您可以扩展Exception并实现自己的Exception类。如果你只想欺骗StyleCop
,你甚至可能把它留空public Class MyException : Exception
{
public MyException(string errorMsg) : base(errorMessage) {}
}
然后
throw new MyException("blah blah");