那么,既不,因为你不会使用b其他else
和return
。
所以,你要么做:
private void method() {
if (!condition) {
MessageBox.Show("ERROR!");
} else {
//DO STUFF
}
}
或:
private void method() {
if (condition) {
//DO STUFF
} else {
MessageBox.Show("ERROR!");
}
}
或:
private void method() {
if (!condition) {
MessageBox.Show("ERROR!");
return
}
//DO STUFF
}
或:
private void method() {
if (condition) {
//DO STUFF
return;
}
MessageBox.Show("ERROR!");
}
您使用哪种代码主要取决于代码的实际功能。代码很少像例子中那样简单,所以它更重要的代码将做什么。
前两个优点是具有单个退出点,这样可以更容易地遵循代码。您通常会先将较短的代码放在第一位,因为在较大的代码块后更易于发现,而不是else
。
第三个经常被用来与主代码继续之前,验证输入,你可以轻松拥有一个以上的验证:
private void method() {
if (!condition) {
MessageBox.Show("ERROR!");
return
}
if (!anotherCondition) {
MessageBox.Show("ANOTHER ERROR!");
return
}
//DO STUFF
}
四是有用的,如果您有没有几个条件要放在同一if
声明:
private void method() {
if (condition) {
var data = GetSomeData();
if (data.IsValid) {
var moreData = GetSomeMoreData();
if (moreData.IsValid) {
//DO STUFF
return;
}
}
}
MessageBox.Show("ERROR!");
}
这个问题是更好地在这里适用:http://codereview.stackexchange.com/ –
有没有你不抛出异常什么特别的原因?看起来像这样引发的错误,如“在错误消息” – harold
@harold上单击确定后所有地狱崩溃,代码位于顶层(UI),因此您不能向用户建议抛出异常。 – hungryMind