Sobes.tech
Junior

Hoe gooi je correct exceptions in Java?

sobes.tech AI

Antwoord van AI

Exceptions moeten worden opgeworpen wanneer een onvoorziene situatie optreedt die de normale uitvoering van het programma onderbreekt en onmiddellijke verwerking vereist.

Basisprincipes:

  • Gebruik exceptions om fouten te melden, niet om de stroom van uitvoering te controleren.
  • Kies het meest geschikte type exception uit de standaardbibliotheek.
  • Maak je eigen exception-klassen aan wanneer de standaard niet voldoende informatie bieden.
  • Voeg in het exception-bericht gedetailleerde informatie over de oorzaak van de fout, inclusief de context.
  • Vang geen exceptions die je niet correct kunt afhandelen. Het is beter om ze hoger in de call stack door te geven.
  • Gebruik try-with-resources blokken voor automatische resource-afsluiting.
  • Log exceptions die je behandelt of doorgeeft aan een hoger niveau.

Correcte syntax: throw new MyException("Foutmelding");

Voorbeeld:

// Maak je eigen exception
public class InvalidParameterException extends Exception {
    public InvalidParameterException(String message) {
        super(message);
    }
}

// Methode die een exception gooit
public int divide(int a, int b) throws InvalidParameterException {
    if (b == 0) {
        throw new InvalidParameterException("Delen door nul is niet toegestaan");
    }
    return a / b;
}

// Gebruik van de methode en afhandeling van de exception
public void performDivision(int x, int y) {
    try {
        int result = divide(x, y);
        System.out.println("Resultaat: " + result);
    } catch (InvalidParameterException e) {
        // Log de fout
        System.err.println("Fout bij deling: " + e.getMessage());
        // Mogelijke verdere verwerking of doorgeven
    }
}

Verschillen tussen Checked en Unchecked exceptions:

Type exception Erft van Vereist verwerking/delcaratie Voorbeeld
Checked Exception (behalve RuntimeException) Ja (try-catch of throws) IOException, SQLException
Unchecked RuntimeException Nee (compiler vereist het niet) NullPointerException, ArrayIndexOutOfBoundsException