Zwischenstufe Java Tag 5: Ausnahmebehandlung & Eingabevalidierung

Ziel dieses Tages

Heute wirst du lernen:

Am Ende wirst du in der Lage sein, Fehler sauber zu behandeln und Benutzereingaben sicher zu validieren.

Schritt 1: try-catch-finally

Verwende try, um Code zu umschließen, der eine Exception auslösen kann.

Verwende catch, um Fehler abzufangen.

Verwende finally, um Code immer auszuführen – egal ob ein Fehler auftritt oder nicht.


Scanner sc = new Scanner(System.in);

try {
    System.out.print("Gib eine Zahl ein: ");
    int num = sc.nextInt();
    System.out.println("Zahl: " + num);
} catch(InputMismatchException e) {
    System.out.println("Ungültige Eingabe!");
} finally {
    sc.close();
}

Schritt 2: Mehrere catch-Blöcke

Du kannst verschiedene Fehlerarten separat behandeln.


try {
    int[] arr = {1, 2, 3};
    System.out.println(arr[5]); // kann ArrayIndexOutOfBoundsException auslösen
} catch(InputMismatchException e) {
    System.out.println("Ungültige Eingabe!");
} catch(ArrayIndexOutOfBoundsException e) {
    System.out.println("Index außerhalb des Bereichs!");
}

Schritt 3: Eingabevalidierung mit Exceptions

Validiere Eingaben, um sicherzustellen, dass sie gültig sind.


Scanner sc = new Scanner(System.in);
int number = -1;

while(number <= 0) {
    try {
        System.out.print("Gib eine positive ganze Zahl ein: ");
        number = sc.nextInt();

        if(number <= 0) {
            throw new IllegalArgumentException("Zahl muss positiv sein!");
        }
    } catch(InputMismatchException e) {
        System.out.println("Ungültige Eingabe! Bitte eine Zahl eingeben.");
        sc.next(); // ungültige Eingabe entfernen
    } catch(IllegalArgumentException e) {
        System.out.println(e.getMessage());
    }
}
System.out.println("Du hast eingegeben: " + number);
sc.close();

Schritt 4: Eigene Exception-Klassen (optional)

Du kannst eigene Exception-Klassen definieren.


class NegativeNumberException extends Exception {
    public NegativeNumberException(String message) {
        super(message);
    }
}

Übung


Scanner sc = new Scanner(System.in);
try {
    System.out.print("Gib eine Zahl ein: ");
    int num = sc.nextInt();
    System.out.println("Zahl: " + num);
} catch(InputMismatchException e) {
    System.out.println("Ungültige Eingabe!");
} finally {
    sc.close();
}

Aufgabe

Erstelle ein Programm, das nur positive ganze Zahlen akzeptiert.

Schritte:

Beispiel:


import java.util.InputMismatchException;
import java.util.Scanner;

public class PositiveInput {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int number = -1;

        while(number <= 0) {
            try {
                System.out.print("Gib eine positive ganze Zahl ein: ");
                number = sc.nextInt();

                if(number <= 0) {
                    throw new IllegalArgumentException("Zahl muss positiv sein!");
                }
            } catch(InputMismatchException e) {
                System.out.println("Ungültige Eingabe! Bitte eine Zahl eingeben.");
                sc.next();
            } catch(IllegalArgumentException e) {
                System.out.println(e.getMessage());
            }
        }

        System.out.println("Du hast eingegeben: " + number);
        sc.close();
    }
}