2019-11-16 08:27:50 +00:00
parent 065898d0f4
commit 807a3ac738

@@ -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