Возвращаемое значение передовой практики против исключения против Enum [закрыто]
Я пытаюсь выяснить преимущества и недостатки метода с несколькими значениями результата.
Например я использую метод входа в систему. Если вход был успешным, он пройдет, в противном случае мне нужно знать, почему это не удалось.
1. Верните true или false (Не хватает информации)
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);
«Логин» - это только один пример. Я хотел бы знать, каковы преимущества и недостатки различных реализаций, и для каких случаев они более или менее подходят.