# Wednesday, April 22, 2009

GarbageCollection mit halbinstanziierten Objekten

Im Buch Framework Design Guidelines bin ich auf einen interessanten Aspekt gestoßen, der bei der Implementierung von Kon- und Destruktoren beachtet werden muss. Man stelle sich folgende Szenario vor: In einem Konstruktor wird durch einen falschen oder fehlerhaften Parameter ein Zustand erreicht, der es erfordert, eine Exception zu werfen. Dies wird nun getan. Der Aufrufer behandelt nun die Exception. Allerdings ist das Objekt zu diesem Zeitpunkt bereits instanziiert, wenn auch nicht zwangsläufig vollständig initialisiert. Der Initialisierungszustand hängt hier von der Stelle im Konstruktor ab, in dem die Exception geworfen wurde.

Interessant an diesem Szenario ist nun, dass das instanziierte Objekt ja auch durch den Garbage Collector freigegeben wird. Es wird also die Finalize-Methode und die Dispose-Methode mit false aufgerufen. Bei der Implementierung dieser Zweige sollte man daher im Hinterkopf haben, dass sich unter Umständen das freizugebende Objekt in einem undefinierten Zustand befindet.

Eigentlich ist dies ein Sachverhalt, der bei genauer Betrachtung vollkommen logisch ist. Allerdings muss man sich dessen erst einmal bewusst sein.

Wednesday, April 22, 2009 7:52:00 PM (W. Europe Daylight Time, UTC+02:00) #  Comments [0] | Trackback
OpenID
Please login with either your OpenID above, or your details below.
Name
E-mail
Home page

Comment (Some html is allowed: a@href@title, strike) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Live Comment Preview