在以下情况下,为什么MS C#编译器会提示“并非所有代码路径都返回一个值”?

public int Foo(bool flag)
{
    if(flag)
    {
        return 1;
    }
    else
    {
        ThrowException(); // this method always throws an exception

        // return -1; // why do I need to add this code that will never be called?
    }
}

谢谢!

最佳答案

不能猜测ThrowException()是总是抛出异常的方法。为此,您需要静态代码分析。

我相信VS 2010中提供了静态代码分析功能,但仅适用于更昂贵的VS版本。

关于c# - C#编译器有缺陷吗? : Not detecting methods that always throw exceptions,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3483439/

10-11 00:27