我在C#中工作,所以我已經在C#下發布了這個,儘管這可能是一個可以用任何編程語言回答的問題。返回有意義的返回值的方法
有時我會創建一個方法來做一些事情,例如將用戶登錄到網站。通常情況下,我從方法返回一個布爾值,但是這經常會導致問題,因爲布爾返回值沒有傳達任何上下文。如果在登錄用戶時發生錯誤,我無法知道導致錯誤的原因。
這裏是我目前使用的方法的例子,但想改變,因此它返回的不僅僅是0或1
public bool LoginToTwitter(String username, String password)
{
// Some code to log the user in
}
上述方法更只能返回真或假。這個效果很好,因爲我可以調用如下。
if(http.LoginToTwitter(username, password))
{
// Logged in
} else {
// Not Logged in
}
但問題是我不知道爲什麼在沒有登錄用戶的方式有很多原因可能存在,如:錯誤的用戶名/密碼組合,暫停帳戶,帳戶需要用戶注意等。但使用以下方法和邏輯,不可能知道這一點。
我有什麼替代方法?
發生新的錯誤情況時發生了什麼。 @丹? – xhamr
@jvra如果有任何意外的例外,我相信他們應該重新拋出,因爲一些其他的答案表明。但是,您的代碼應該能夠處理所有預期的情況:錯誤的用戶名,錯誤的密碼,帳戶暫停等等,並將這些預期情況返回給您的應用程序處理的枚舉。 –
但事實是,當你想處理其他錯誤枚舉。你的代碼會隨着你的常量枚舉的增長而增長。但如果你知道將來你不可能有更多的常量枚舉,那麼這是可以接受的。 – xhamr