标记代码无法访问的最佳方法是什么,因此编译器不会给出错误消息? 一个简短的例子:
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);
答案 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
只是一个或零因为的参数值,然后再次表明原因。如果基本上这是世界整体状态被打破的问题,上述情况是合适的。)