Exceptions
Exceptions melden Fehler zur Laufzeit. try/catch fängt sie ab, statt das Programm abstürzen zu lassen.
Ansicht
01
Verstehen
Lies die Kernidee und das Beispiel.
02
Prüfen
Beantworte die Aktiv-Checks.
03
Anwenden
Setze die Transferaufgabe um.
Mini-Erfolg
Dein Programm fängt eine ungültige Zahl ab, statt abzustürzen.
Warum das wichtig ist: Fehler passieren. Gute Programme verstecken sie nicht, sondern erklären, was schiefgelaufen ist.
Vorher hilfreich
Lerninhalt
Verstehen & anwenden
try / catch
Riskanter Code steht im try-Block, die Fehlerbehandlung im catch.
Mehrere catch-Blöcke behandeln unterschiedliche Fehlertypen — vom speziellen zum allgemeinen.
try {
int zahl = Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.out.println("Keine gültige Zahl: " + e.getMessage());
}finally und Ressourcen
finally läuft immer — ob Fehler oder nicht.
Klassisch fürs Aufräumen.
try-with-resources schließt Ressourcen wie Dateien automatisch.
try (var reader = Files.newBufferedReader(pfad)) {
System.out.println(reader.readLine());
} // reader wird automatisch geschlossenthrow und eigene Exceptions
throw löst eine Exception aus, wenn ein Zustand ungültig ist.
Checked Exceptions müssen deklariert oder behandelt werden, unchecked (RuntimeException) nicht.
public void setAlter(int alter) {
if (alter < 0) {
throw new IllegalArgumentException("Alter darf nicht negativ sein");
}
this.alter = alter;
}Vertiefung
Fehler sind Teil des Vertrags
Checked Exceptions zwingen dich, einen möglichen Fehler zu behandeln. Unchecked Exceptions zeigen Programmierfehler oder ungültige Zustände. Beides hat seinen Platz.
Ein leeres catch ist fast immer falsch. Gute Fehlerbehandlung erklärt, was passiert ist, und lässt den Aufrufer entscheiden, ob er weitermachen kann.
class UngueltigesAlterException extends RuntimeException {
UngueltigesAlterException(String message) { super(message); }
}
void setAlter(int alter) {
if (alter < 0) throw new UngueltigesAlterException("Alter: " + alter);
this.alter = alter;
}Merksatz: Fange nur Fehler, die du wirklich behandeln kannst. Eine eigene Exception macht den fachlichen Grund sichtbar.
Übungsaufgabe
Alterscheck
Lies ein Alter ein und wirf eine IllegalArgumentException, wenn es negativ ist. Fange sie ab und gib eine hilfreiche Meldung aus.
Das soll dein Programm können
- Methode setAlter mit Validierung
- try/catch in main
- Ausgabe des Fehlers mit getMessage()
- Ein gültiger Aufruf danach
Schreibe den Code hier oder in deiner IDE und vergleiche ihn dann mit der Lösung.
Dein Code wird automatisch auf diesem Gerät gespeichert.
Hinweis anzeigen
Nach dem catch läuft das Programm weiter. Rufe setAlter danach noch einmal mit einem gültigen Wert auf.
Lösung anzeigen
public class Alterscheck {
public static void main(String[] args) {
try {
setAlter(-5);
} catch (IllegalArgumentException e) {
System.out.println("Fehler: " + e.getMessage());
}
setAlter(25);
System.out.println("Gültiges Alter gesetzt.");
}
static void setAlter(int alter) {
if (alter < 0) {
throw new IllegalArgumentException("Alter darf nicht negativ sein: " + alter);
}
System.out.println("Alter: " + alter);
}
}Warum funktioniert das?
Die Exception unterbricht setAlter sofort. Der catch behandelt genau diesen Fall, danach kann das Programm mit einem gültigen Wert weitermachen.
Aktiv-Check
Teste dein Verständnis
Erkennen: Welcher Abschnitt passt?
Welcher Abschnitt passt zu diesen Begriffen?
Spaßprojekt
Alterscheck
Lies ein Alter ein und wirf eine eigene Exception, wenn es negativ ist. Fange sie auf und gib eine hilfreiche Meldung aus.
Selbstcheck
Kann ich das schon?
Hake ab, was du wirklich erklären oder selbst bauen könntest.
Fortschritt
Bereit zum Abschließen?
Markiere die Lektion als abgeschlossen, um XP und Streak zu erhalten.