那麼,既不,因爲你不會使用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