Hi,
ich lerne gerade die Struktur von try-catch-Klauseln und die überprüften Ausnahmen, die im Java-API definiert sind.
Lt. Buch überprüft der Compiler diese und fordert, daß im Code solcherlei Ausnahmen ENTWEDER durch eine try-Klausel abgefangen ODER durch eine throws-Klausel weitergeleitet werden.
In meinem letzten Codebeispiel ist es aber so, daß ich beides habe - wenn ich die try-Klausel - oder auch die catch-Klausel - kommentiere, funktioniert es auch nicht mehr. Also brauche ich wohl beides.
Der Code ist dieser:
Aus meinem Buch geht jetzt leider nicht hervor, wieso ich syntaktisch eine try-catch-Klausel brauche, obwohl die Methode takeANap schon eine throws-Klausel beinhaltet.
Kann mir das jemand hier verständlich machen?
Danke vielmals!
Gruß,
Javaswillerdenn
ich lerne gerade die Struktur von try-catch-Klauseln und die überprüften Ausnahmen, die im Java-API definiert sind.
Lt. Buch überprüft der Compiler diese und fordert, daß im Code solcherlei Ausnahmen ENTWEDER durch eine try-Klausel abgefangen ODER durch eine throws-Klausel weitergeleitet werden.
In meinem letzten Codebeispiel ist es aber so, daß ich beides habe - wenn ich die try-Klausel - oder auch die catch-Klausel - kommentiere, funktioniert es auch nicht mehr. Also brauche ich wohl beides.
Der Code ist dieser:
Java:
import static java.lang.System.out;
class Sleep2_alternative {
// Dieser Code ist eine Alternative zu >Sleep2<. Hier wird die Ausnahme in anderer Weise verarbeitet.
public static void main(String[] args) {
out.println("Sechs Sek Pause...");
// Hier steht der Aufruf der takeANap-Methode innerhalb der try-Klausel.
try {
takeANap();
}
// Die catch-Klausel ist wie im letzten Codebeispiel;
catch (InterruptedException e) {
out.println("Unterbrechung der Pause");
}
out.println("Weiter geht's.");
/* Hier wird die main-Methode geschlossen. Daher liegt die Definition der Methode >takeANap<
* außerhalb der main-Methode. Die Methode wirft ja die InterruptedException weiter an die main.
*/
}
/* Die Methode >takeANap< wird hier so definiert, daß sie die Verantwortung für die
* >InterruptedException< an die aufrufende Methode (hier die main-Methode) weitergibt.
*/
static void takeANap() throws InterruptedException {
Thread.sleep(6000);
}
}
Aus meinem Buch geht jetzt leider nicht hervor, wieso ich syntaktisch eine try-catch-Klausel brauche, obwohl die Methode takeANap schon eine throws-Klausel beinhaltet.
Kann mir das jemand hier verständlich machen?
Danke vielmals!
Gruß,
Javaswillerdenn