From 807a3ac7387871ca23003bbc116e20f01c348543 Mon Sep 17 00:00:00 2001 From: Sebastian Eidecker Date: Sat, 16 Nov 2019 08:27:50 +0000 Subject: [PATCH] --- Aufpassen%21.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Aufpassen%21.md b/Aufpassen%21.md index e6fc5bd..9682b0c 100644 --- a/Aufpassen%21.md +++ b/Aufpassen%21.md @@ -32,8 +32,10 @@ - `RuntimeException`s müssen nicht gefangen oder deklariert werden. - Alle anderen Exceptions müssen deklariert *und* gefangen (oder wiederum deklariert) werden. - *Todo*: Müssen deklarierte Checked Exceptions geworfen werden? -> Nein + - Dürfen nicht deklarierte CheckedExceptions gefangen werden? -> Nein (``Exception, RuntimeExcpetion, Throwable, Error`` schon). Compilezeit-Typ zählt. - `IOException` ist eine checked Exception - - Überschriebene Methoden müssen Exceptions oder **Subklassen** deklarieren. (Dann bei super-Aufrufen die ursprüngliche Exception aber auch behandeln) + - Überschriebene Methoden dürfen keine neuen CheckedExceptions deklarieren, von vorhandenen dürfen **Subklassen** deklariert werden. (Dann bei super-Aufrufen die ursprüngliche Exception aber auch behandeln). Nicht deklarierte Exceptions der Oberklasse sind auch nicht vorhanden, müssen nicht behandelt werden (deklarierter Typ zählt). + - - **Konstruktoren und Vererbung**: - `super` erster Aufruf, auch nicht in try-Block einbettbar - Dadurch können Exceptions der Konstruktoren der Superklassen nicht gefangen und selbst deklariert werden