Fejlhåndtering
Her er et lille Java-eksempel, som viser:
- input-validering
- brug af checked vs. unchecked exceptions
- hvordan man kaster (
throw) og håndterer (try/catch) exceptions
Eksemplet er velegnet til undervisning på fx 1.–2. semester.
public class ValidationException extends RuntimeException {
public ValidationException(String message) {
super(message);
}
}
Bruges når input er ugyldigt – typisk programmerings- eller brugerfejl.
public class User {
private final String username;
private final int age;
public User(String username, int age) {
validateUsername(username);
validateAge(age);
this.username = username;
this.age = age;
}
private void validateUsername(String username) {
if (username == null || username.isBlank()) {
throw new ValidationException("Username må ikke være tom");
}
}
private void validateAge(int age) {
if (age < 18) {
throw new ValidationException("Brugeren skal være mindst 18 år");
}
}
@Override
public String toString() {
return username + " (" + age + " år)";
}
}
Validering tæt på data = god OO-praksis
public class Main {
public static void main(String[] args) {
try {
User user = new User("Jon", 16);
System.out.println(user);
} catch (ValidationException e) {
System.out.println("Fejl: " + e.getMessage());
}
}
}
Output:
Fejl: Brugeren skal være mindst 18 år
public class InvalidEmailException extends Exception {
public InvalidEmailException(String message) {
super(message);
}
}
public void setEmail(String email) throws InvalidEmailException {
if (!email.contains("@")) {
throw new InvalidEmailException("Ugyldig email");
}
}
Checked exceptions bruges ofte når:
- fejlen kan forventes
- kaldende kode skal tvinges til at håndtere den
| Situation | Exception-type |
|---|---|
| Ugyldigt input / validering | RuntimeException |
| Eksterne forhold (IO, DB, netværk) | Checked exception |
| Programmeringsfejl | RuntimeException |