Heute wirst du lernen:
try-catch-finally-Blöcke verwendetcatch-Blöcke nutzenAm Ende wirst du in der Lage sein, Fehler sauber zu behandeln und Benutzereingaben sicher zu validieren.
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();
}
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!");
}
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();
Du kannst eigene Exception-Klassen definieren.
class NegativeNumberException extends Exception {
public NegativeNumberException(String message) {
super(message);
}
}
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();
}
Erstelle ein Programm, das nur positive ganze Zahlen akzeptiert.
Schritte:
try-catch validierenBeispiel:
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();
}
}