Exception Handling (deutsch Ausnahmenbehandlung) behandelt Exceptions (deutsch Ausnahmen) bei der Ausführung eines Computerprogramms, damit das Programmm oder System nicht abstürzt. Eine Exception ist dabei ein vom Programm nicht erwartetes Ereignis.
Exception Handling
Dein Programm führt zwar nun die gewünschten Operationen aus, jedoch kommt es bei der Eingabe von falschen Werten zu Exceptions. Um diese zu verhindern, musst du Exception Handling betreiben.
Dafür musst du dir überlegen, an welchen Stellen die User falschen Input geben können.
Das ist eigentlich bei allen drei Inputs möglich.
Jetzt musst du dir überlegen, welcher Input erlaubt sein muss.
In dem Fall der beiden Zahlen soll es sich um den Datentyp double
handeln, also soll dein Programm bei jedem anderen Datentyp eine Fehlermeldung werfen.
int
ist als Input in Ordnung, hier wird automatisch in double
umgerechnet.
Ein Exception-Handler besteht immer aus einem try
- und einem catch
-Block. Der try
-Block enthält dabei den Programm-Code, bei dem es zu Exceptions kommen kann. Der catch
-Block fängt diese auf, indem er vorgibt, was im Falle der jeweiligen Exception passiert.
In diesem Fall muss also die Zeile firstNumber = userInput.nextDouble();
bzw. secondNumber = userInput.nextDouble();
in den try
-Block.
Du kannst in deinem catch
-Block nun eine Nachricht an die User ausgeben, dass sie eine falsche Eingabe getätigt haben. Außerdem wird mithilfe des Befehls System.exit(-1);
das Programm beendet. In den Klammern des catch
-Blocks übergibst du noch die Art der Exception, hier ist es eine InputMismatchException
. Diese nennst du einfach e
.
Diese Exception musst du zuvor jedoch noch aus dem util
-Paket mit dem Befehl import java.util.InputMismatchException;
importieren:
Besuche die App, um alle Inhalte zu sehen!
Jetzt fehlt dir noch die Exception, wenn die User durch 0 teilen wollen.
Da hier also die Zeile System.out.println(firstNumber / secondNumber);
betroffen ist, wird sie gemeinsam mit der System.out.println("Result:");
-Zeile in den try
-Block geschrieben.
Den Fall, dass 0.0
eingegeben wird, überprüfst du mit einer if
-Abfrage. Wenn die Bedingung secondNumber == 0.0
true
ist, dann wird eine ArithmeticException
geworfen.
Im catch
-Block wird wieder eine Nachricht an die User ausgegeben, dass sie nicht durch 0 teilen können:
Besuche die App, um alle Inhalte zu sehen!
Den Fall, dass die User bei dem Operator einen falschen Input eingeben, hast du bereits mit deinem switch
-Block abgefangen.
Daher hast du jetzt alle Funktionen erfolgreich implementiert und alle Exceptions behandelt! Probier gerne verschiedene Zahlen und Operationen aus. Achte darauf, dass du deine Kommazahlen in der Konsole mit einem Komma eingibst, damit sie als double
erkannt werden.