我试图找出一种具有多个结果值的方法的优缺点。
例如,我正在使用登录方法。如果登录成功,则它将通过,否则我需要知道失败的原因。
1. 返回真或假(信息不足)
bool Login(string user, string password);
2. 如果成功则返回 true,否则抛出异常
public class UnknownUserException : Exception { }
public class WrongPasswordException : Exception { }
bool Login(string user, string password);
3. 不返回任何东西。如果没有成功,抛出异常。
public class UnknownUserException : Exception { }
public class WrongPasswordException : Exception { }
void Login(string user, string password);
4. 返回枚举值
enum LoginResult
{
Successful
UnknownUser,
WrongPassword
}
LoginResult Login(string user, string password);
“登录”只是一个示例案例。我想知道不同实现方式的优缺点,并且它们在哪些情况下更或者不太适用。