Middle
Welke methoden bestaan er voor het afhandelen van gecontroleerde uitzonderingen?
sobes.tech AI
Antwoord van AI
- Gebruik de
try-catch-blok: hiermee kunt u een uitzondering opvangen en verwerken, waardoor een onverwacht beëindigen van het programma wordt voorkomen. - Geef aan dat een methode een uitzondering kan werpen door het sleutelwoord
throwsin de handtekening van de methode te gebruiken: dit legt de verantwoordelijkheid voor de verwerking bij de aanroepende code. - Wikkel een controleerbare uitzondering in een niet-controleerbare: hiermee kunt u de uitzondering doorgeven zonder expliciete verwerking, maar het kan een echt probleem verbergen.
Voorbeeld van gebruik van try-catch:
// Voorbeeld van gebruik van try-catch voor het afhandelen van een controleerbare uitzondering
try {
// Code die een controleerbare uitzondering kan veroorzaken (bijvoorbeeld, IOException)
FileReader file = new FileReader("my_file.txt");
// Werken met het bestand...
} catch (IOException e) {
// Afhandeling van IOException
e.printStackTrace(); // Toont de call stack voor debugging
System.err.println("Fout bij het werken met het bestand: " + e.getMessage());
}
Voorbeeld van gebruik van throws:
// Voorbeeld van gebruik van throws in de methodesignatuur
public void readFile(String fileName) throws IOException {
FileReader file = new FileReader(fileName);
// Werken met het bestand...
}
// De aanroepende code moet IOException afhandelen of in zijn eigen throws declareren
public void processFile(String filePath) {
try {
readFile(filePath);
} catch (IOException e) {
System.err.println("Fout bij het lezen van het bestand: " + e.getMessage());
}
}
Voorbeeld van het wrappen in een niet-controleerbare uitzondering:
// Voorbeeld van het wrappen van een controleerbare uitzondering in een niet-controleerbare
public void unsafeOperation() {
try {
// Code die een controleerbare uitzondering kan veroorzaken
throw new IOException("Voorbeeld van IOException")
} catch (IOException e) {
// Omzetten van de controleerbare in een niet-controleerbare
throw new RuntimeException("Er is een fout opgetreden in de operatie", e);
}
}