我在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