基本上在工作中我经常遇到如下代码:
double pricediff = 0.0;
if(!string.IsNullOrEmpty(someVariable.ToString()))
pricediff = Convert.ToDouble(someVariable);
而不是像:
double pricediff = 0.0;
Double.TryParse(someVariable, out pricediff);
Visual Studio中是否有一个设置可以在使用Convert.Double
之类的方法时产生警告,该方法可以抛出异常并且该方法不包含在try{}
块中?
答案 0 :(得分:2)
不,没有。部分原因是,实际上任何方法都可以抛出异常。它必须对几乎所有方法发出警告,因为几乎任何方法都可以引发以下
StackOverflowException
OutOfMemoryException
除此之外,更有可能NullReferenceException
并且基本上每个方法都会被标记为“可以抛出”。
尽管创建一个标记明确抛出异常的功能是合理的。 VS没有此功能,但R#(IIRC)。然而,即使这不是万无一失的,因为你无法通过界面看到。
interface IExample {
void Method();
}
class Class1 : IExample() {
void Method() { throw new Exception(); }
}
class Class2 : IExample() {
void Method() {}
}
...
IExample v1 = ...;
v1.Method();
在同一方法中可能会或可能不会抛出。在所有情况下,无论是否确实无法通过静态分析确定。