2.8 KiB
Exceptions
Erlauben es mit Fehlersituationen in einem Programm umzugehen. Es gibt zwei mögliche Fehlerarten:
-
Entwicklungsfehler Vermeidbare Fehler die während der Entwicklung auftreten. Können gut durch Tests aufgedeckt werden und brauchen keine explizite Fehlerbehandlung. Beispiel: Ungültiger Arrayindex, Teilen durch 0
-
Umgebungsfehler Unvermeidbare Fehler die durch die Programmumgebung ausgelöst werden. Diese Fehlerart benötigt eine Fehlerbehandlung. Beispiel: Keine Internetverbindung, Zu wenig Festplattenspeicher
Hierarchie
Exceptions sind Objekte die von Exception
oder RuntimeException
erben.
Ungeprüfte Exceptions
Erben von RuntimeException
und müssen nicht explizit behandelt werden.
Dreieck dreieck = null;
double flaeche = dreieck.gibFlaeche();
// Programm wird beendet mit NullPointerException
Geprüfte Exceptions
Erben von Exception
und müssen explizit behandelt werden.
public static void main(String[] args) {
System.out.print("Bitte Alter eingeben: ");
try {
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
int alter = Integer.parseInt(name); // Wirft ggf. NumberFormatException
}
catch(NumberFormatException e) {
System.out.println("Das war kein gültiges Alter!");
}
finally {
sc.close()
}
}
Exceptions werfen
Exceptions werden mit dem Schlüsselwort throw
geworfen. Wird in einer Methode eine geprüfte Exception nicht behandelt, muss dies in dem Methodenkopf mithilfe von throws
deklariert werden.
public void pingServer(String serverUrl) throws ConnectException
{
Server server = connectToServer(serverUrl);
if(server == null)
{
throw new ConnectException("Can't connect to server");
}
}
Übung
-
Wann werden geprüfte Exceptions eingesetzt und wann ungeprüfte?
- Geprüfte Exceptions bei Umgebungsfehlern, Ungeprüfte Exceptions bei Entwicklungsfehlern
-
Wie kann eine geprüfte Exception beim Auftreten an den Klienten weitergeleitet werden?
- In den Methodenkopf
throws
reinschreiben
- In den Methodenkopf