Natknąłem się na publikację dot. Javy i jest tam rozdział opisujący sposoby przechwytywania wyjątków.
Przykład dobrany przez autora mnie zaintrygował. Osobiście nie programuję w Javie i nie wiem na ile te przykłady są zgodne z dobrymi praktykami.
Co mnie uderza:
- Wyrzucanie wyjątku w setterze.
- Tworzenie prywatnych i publicznych konstruktorów w klasie. Jakie są typowe zastosowanie tego podejścia?
public class User {
private String username;
private String password;
public User(){
this("username", "password", false);
}
private User(String username, String password, boolean b) {
// only call this because we don't want to throw the exception
this.username = username;
try{
setPassword(password);
}catch(InvalidPassword e){
throw new IllegalArgumentException(
"Default password incorrect ", e);
}
}
public User(String username, String password)
throws InvalidPassword{
this.username = username;
setPassword(password);
}
public void setPassword(String password) throws InvalidPassword {
if(password.length()<7){
throw new InvalidPassword("Password must be > 6 chars");
}
this.password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}