使代码无法访问

时间:2014-05-14 16:17:38

标签: c#

标记代码无法访问的最佳方法是什么,因此编译器不会给出错误消息? 一个简短的例子:

int x;
if (y == 0) x = 1;
else if (y == 1) x = 2;

Console.WriteLine(x);

我知道y可以是0或1,但C#会给出一条消息,即x不会使所有路径成为值。真正的代码不是这个,但我想让它更短。

抛出异常是一种好习惯,还是有其他方法?

int x;
if (y == 0) x = 1;
else if (y == 1) x = 2;
else throw new Exception();

Console.WriteLine(x);

1 个答案:

答案 0 :(得分:6)

我会抛出一个例外 - 这表明世界并没有处于你期望的状态,你最好在你做任何伤害之前戒掉:

if (y == 0)
{
    x = 1;
}
else if (y == 1)
{
    x = 2;
}
else
{
    throw new IllegalStateException("y should be 0 or 1");
}

或者,对于像这样的简单情况,请使用开关/案例:

switch (y)
{
    case 0:
        x = 1;
        break;
    case 1:
        x = 2;
        break;
    default:
        throw new IllegalStateException("y should be 0 or 1");
}

(如评论中所述,如果y是方法参数,那么ArgumentOutOfRangeException会更合适。或者如果y只是一个或零因为的参数值,然后再次表明原因。如果基本上这是世界整体状态被打破的问题,上述情况是合适的。)