MatzeLoCal
Rheinischer Bohnapfel
- Registriert
- 05.01.04
- Beiträge
- 2.422
Ergo, "finally" braucht es nicht, da "finally" keinerlei Nutzen in C++ hat. Der Nachteil von "finally" ist aber, daß man überall in den Programmcode "finally" Statements einfügen muß, d.h. man hat eine explizite Resourcenverwaltung. Und exakt daran krankt Java. Implizit aufgerufene Destruktoren sind expliziten "finally"-Statements überlegen, da man bei ersteren sich nicht darum kümmern muß, wann sie aufgerufen werden müssen, das macht schon der Compiler/Laufzeitumgebung in einer deterministischen Art&Weise.
Sag mal, hast Du schonmal Java-Code gelesen????
Ich gebe dir mal ein Beispiel für finally:
(pseudo code!!!)
Code:
private void schreibeStringInDatei(String einString) {
try {
//Datei öffnen
//einString in die Datei schreiben
} catch(Exception ex) {
//Hier is zutun, was bei einem fehler eben zu tun ist
} finally {
//Datei schliessen
}
Was hier passiert ist nur eines, nach am Ende des try/catch-Blocks wird das was in finally steht ausgeführt. Ganz egal, ob das schreiben in die Datei auf einen Fehler lief oder ob es ordungsgemäß ablief. DAFÜR wird finally verwendet. Finally ist nur optional.. die Datei hätte auch ausserhalb des blocks geschlossen werden können.. aber das ist eine andere geschichte... achja.. und bevor die Kritik kommt, dass auch das Schliessen der Datei auf Fehler läuft .. jap... richtig.. aber das tut zum Verständnis des Beispiels nichts zur Sache.
Zum besseren Verständnis von Exceptions in Java ... das ist das mit dem finally
Zuletzt bearbeitet: