当使用可以创建未处理异常的方法时,Visual Studio中是否有设置引发警告或错误?

时间:2010-06-24 23:23:27

标签: visual-studio settings

基本上在工作中我经常遇到如下代码:

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{}块中?

1 个答案:

答案 0 :(得分:2)

不,没有。部分原因是,实际上任何方法都可以抛出异常。它必须对几乎所有方法发出警告,因为几乎任何方法都可以引发以下

  1. StackOverflowException
  2. OutOfMemoryException
  3. 除此之外,更有可能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();
    

    在同一方法中可能会或可能不会抛出。在所有情况下,无论是否确实无法通过静态分析确定。