Hallo,
Zitat von
Luckie:
Zum ersten Fall:
Ich werfe in so einem Fall eine
Exception, dich ich dann im Aufrufer abfange.
Da fallen mir dann 2 Realisierungsmöglichkeiten ein. Angenommen ich lagere so eine Abarbeitung in eine eigene Prozedur aus und im Fehlerfall werfe ich eine
Exception. Wenn ich jetzt die einzelnen Fehler unterscheiden möchte, könnte ich entweder verschiedene
Exception-Typen ableiten und verwenden oder einen Typ und die Art des Fehlers dann in der Message der
Exception hinterlegen.
Eingene
Exception-Typen wärend da sauberer wegen einer möglichen Behandlung durch:
Delphi-Quellcode:
except
on ... do
on ... do
Richtig?
Zitat von
Luckie:
Zum zweiten Fall:
Brauche ich meherer Objekte, erstelle ich alle Objekte gleich am Anfang und gebe sie auch alle im gleichen finally-Block wieder frei.
Kann nicht auch z.B. die Erstellung des 3. Objektes fehlschlagen? Das wäre dann nicht abgefangen. Ich meine unter .NET hat man ja immernoch den Garbage Collector als Sicherheitsnetz...
Zitat von
jbg:
Alternativ kannst du auch alle Variablen vor dem ersten try auf NIL setzen...
Jetzt muß ich nochmal dumm nachfragen. Sind Objektvariablen direkt nach der Deklaration ohne vorherige Verwendung nicht immer mit NIL initialisiert?
Dazu fällt mir noch eine Frage ein:
Wenn ich mir z.B. im
MSDN .NET-Beispielcode anschaue (meist in C#), werden da ja eigentlich nie Destruktoren aufgerufen. Also sowas wiw Free bzw. FreeAndNil. Bei Forms und einigen wenigen Sachen gibts zwar ein Dispose, aber auch das wird nie explizit aufgerufen. Lassen die alles über den Garbage Collector aufräumen? Sind wir Delphianer die auberen Programmierer? Und kann ich bei Objekten, die kein Dispose anbieten den Aufruf von Free auch einfach weglassen, weil dieser sowieso nix macht?
Gruß,
Stephan