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-resourcesblokken 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 |