为什么我可以在return语句后抛出异常?

时间:2015-01-20 21:00:54

标签: c#

C#编译器似乎并不关心throw语句后是否有return语句,即使throw显然无法访问。相反的情况并非如此:编译器可以在return无法访问后检测到throw。这是编译器缺陷吗?

编译好:

string MyProperty
{
    get
    {
        return "";
        throw new InvalidOperationException();
    }
}

string MyMethod()
{
    return "";
    throw new InvalidOperationException();
}

这将无法编译,导致return语句失败:

string MyOtherProperty
{
    get
    {
        throw new InvalidOperationException();
        return "";
    }
}

string MyOtherMethod()
{
    throw new InvalidOperationException();
    return "";
}

编辑:这是使用.NET 4.5.1,C#版本5.0。

编辑2:这是我在编译第二个选项时看到的警告(在返回之前抛出):Unreachable code detected

0 个答案:

没有答案