?
SeppJ schrieb:
destruktör schrieb:
volkard schrieb:
destruktör schrieb:
Weil in C++ schnell alles explodiert mit RAII und Exceptions. Praktisch darf nichts was im Destruktor an Aufräumarbeiten gemacht wird eine Exception aus dem Destruktor werfen, weil sonst im Falle einer anderen Exception alles crasht.
Was passiert in Java, wenn eine Exception geworfen wird und deswegen irgendwann später vom GC ein Objekt vielleicht zerstört wird, das eine Schreibdatei offen hat? Was soll der Destruktor des Objektes machen, wenn das zerstören der Datei nicht die letzten paar Bytes rausschreiben kann? Nix natürlich, wobei wir wieder bei meiner These sind.
Ich hab schon ewig nichts mehr mit Java gemacht, seit wann gibt es da Destruktoren?
Er meint (vermutlich) die Finalize-Methoden, die so etwas ähnliches wie ein Destruktor in Java sind. Kommt halt drauf an, wie man das Konzept eines Destruktors genau definiert. Mit dem Sprachkonzept der deterministischen Destruktoren in C++ (welches meiner Meinung nach ein sehr starkes Konzept ist, und einer der Hauptvorzüge von C++*) haben die Finalizers meiner Meinung nach nur oberflächlich zu tun.
Was dann auch volkards Aussage erklärt.
Was genau ist seine Aussage? Soll man in Java wie in C++ programmieren? Wer verwendet diese finalize-Methoden?