我有一個方法Foo()做了一些艱苦的工作,並在UI層我有一個按鈕來調用該方法。
我想要做的就是調用方法並顯示一個消息框,如果Foo()方法有問題。返回元組<布爾,字符串>而不是拋出異常()?
我有兩個選擇設計方法的簽名:
1.Tuple
Tuple<bool, string> Foo()
{
if(!DoHardWorkA()) return Tuple.New(false, "cannot do hardwork A");
if(!DoHardWorkB()) return Tuple.New(false, "cannot do hardwork B");
return Tuple.New(true, String.Empty);
}
2.Exception
void Foo()
{
if(!DoHardWorkA()) throw new ProgramSpecificException("cannot do hardwork A");
if(!DoHardWorkB()) throw new ProgramSpecificException("cannot do hardwork B");
return Tuple.New(true, String.Empty);
}
兩者DoHardWorkA()和DoHardWorkB()是外部方法那我沒有控制他們,他們返回真/假表明結果。
從邏輯上說,我認爲我應該選擇2,因爲它們確實是例外;但爲了一致性,我想選擇1.
您更喜歡哪一個,爲什麼?
這是C#去了?你應該用你使用的語言來標記你的問題。 – asawyer 2012-03-21 18:10:56
重要的問題是:*失敗非常罕見,或常見?*如果它非常罕見,那麼*拋出異常,然後處理它*。如果失敗很常見,那麼*返回報告失敗性質的數據*並像處理其他任何數據一樣處理數據。 – 2012-03-21 18:49:56