Я пытаюсь выяснить преимущества и недостатки метода с несколькими значениями результата.
Например, я использую метод login. Если логин был успешным, он пройдет, в противном случае мне нужно знать, почему он не удался.
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);
"Вход" - это всего лишь один пример. Я хотел бы знать, каковы преимущества и недостатки различных реализаций и для каких случаев они более или менее уместны.