когда функция или метод вызывают ошибку / недопустимые данные, возвращают ли false или выдают исключение?
Рассмотрим класс, в котором у Логинера есть такой метод:
public boolean login(String username){
//retrieve data...
if(username.equals(record.username)){
return true;
}
return false;
}
тогда в основном или каком-то другом классе
String username = "ggwp";
if(Loginer.login(username)){
//successful login, show homepage...
new User(username);
} else {
//invalid username
}
не будет ли он неэффективным, поскольку он был проверен два раза с помощью оператора if-else, один в Loginer, а другой снова проверяет true на main.
не попробует поймать будет делать то же самое? наличие логина для исключения:
public User login(String username){
//retrieve record data...
if(username.equals(record.username)){
return new User(username);
}
/* Exception if no record found for such username */
throw new MyException("invalid username");
}
затем на главную:
String username = "ggwp2";
User theUser;
try{
//sucessful login
theUser = Loginer.login(username);
}catch(MyException e){
//invalid username
}
try-catch не нужно проверять второй раз значение true или false. (в этом примере я использую возвращаемый объект User, это может быть void и ничего не возвращать, но дело в том, зачем использовать логическое значение, которое в конечном итоге будет проверено дважды?)
некоторые источники на веб-сайтах говорят, что не нужно использовать try-catch для «перебора кода», но в этом случае он просто делает то же самое. (try-catch слишком похож на оператор if-else)
Так что правильно и почему? пожалуйста, руководство и извините, если этот вопрос неверный, я новичок в OO.