"Grundkurs Programmieren in Java - (5. Auflage, 2010)"
2001-2010, Carl Hanser Verlag
Lösungsvorschlag zu Aufgabe 10.2 (Version 3.0)
(c) 2001-2010 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger
Exueb1.java:
Funktioniert nicht:
E:\hiwi\temp>javac Exueb1.java
Exueb1.java:6: unreported exception java.io.FileNotFoundException; must be caugh
t or declared to be thrown
FileReader f=new FileReader("Exueb1.java");
^
Exueb1.java:8: unreported exception java.io.IOException; must be caught or decla
red to be thrown
int c=f.read();
^
2 errors
Der Konstruktor von FileReader kann eine FileNotFoundException werfen und die
read() Methode kann eine IOException werfen - diese müssen weitergeworfen
und gefangen werden.
Quelltext: Exueb1.java
Exueb2.java:
E:\hiwi\temp>javac Exueb2.java
Exueb2.java:22: ')' expected
catch(IOException e,FileNotFoundException f) {}
^
Exueb2.java:22: '{' expected
catch(IOException e,FileNotFoundException f) {}
^
Exueb2.java:25: '}' expected
}
^
3 errors
Mit einer catch-Anweisung kann immer nur eine Exception gefangen werden,
also:
catch (IOException e) {}
catch (FileNotFoundException e) {}
Der Bezeichner f für die FileNotFoundException wäre nicht
zulässig, da wir schon ein FileReader-Objekt mit diesem Bezeichner in diesem
Sichtbarkeitsbereich haben. Die FileNotFoundException kann aber nur vom
FileReader-Konstruktor geworfen werden, der von diesem try-catch-Block aber
gar nicht eingeklammert wird.
Quelltext: Exueb2.java
Exueb3.java:
E:\hiwi\temp>javac Exueb3.java
Exueb3.java:14: unreported exception java.io.FileNotFoundException; must be caug
ht or declared to be thrown
FileReader f=new FileReader("Exueb3.java");
^
1 error
Die FileNotFoundException wird vom Konstruktor des FileReader-Objekts
geworfen, der try-catch-Block klammert dessen Aufruf aber nicht ein.
Quelltext: Exueb3.java
Exueb4.java:
E:\hiwi\temp>javac Exueb4.java
Exueb4.java:8: 'try' without 'catch' or 'finally'
try {
^
1 error
Zu jedem try gehört auch mindestens eine catch-Anweisung.
Quelltext: Exueb4.java
Exueb5.java:
E:\hiwi\temp>javac Exueb5.java
Exueb5.java:16: exception java.io.FileNotFoundException has already been caught
catch(FileNotFoundException e) {}
^
1 error
Eine Exception muss entweder geworfen oder gefangen werden.
Quelltext: Exueb5.java
Exueb6.java:
Dieses Programm funktioniert!
Quelltext: Exueb6.java
Exueb6.java:
E:\hiwi\temp>javac Exueb7.java
Exueb7.java:14: 'catch' without 'try'
catch(IOException e) {}
^
1 error
Ein catch-Block darf nur auf einen try-Block folgen!
Quelltext: Exueb7.java