Skip to main content
Dat 1. Sem Efterår 2025
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

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.


Eksempel: Oprettelse af en bruger med validering

1️⃣ Custom exception (unchecked)

public class ValidationException extends RuntimeException {

    public ValidationException(String message) {
        super(message);
    }
}

Bruges når input er ugyldigt – typisk programmerings- eller brugerfejl.


2️⃣ Domæneklasse med validering i constructor

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


3️⃣ Brug af klassen med try/catch

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

Variation: Checked exception (kort eksempel)

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

Hvornår bruger man hvad?

SituationException-type
Ugyldigt input / valideringRuntimeException
Eksterne forhold (IO, DB, netværk)Checked exception
ProgrammeringsfejlRuntimeException