![]() |
Re: Exception in Create-Prozedur ohne anschließendes Destroy
Zitat:
|
Re: Exception in Create-Prozedur ohne anschließendes Destroy
Zitat:
Aber ich habe dazu eine Frage: Erzeugst du im Konstruktor deines "Hauptobjektes" andere, fremde, nicht zum Hauptobjekt gehörende Objekte??? Beispielsweise eine TStringliste, die sich nicht als Feld FMyStringList:TStringlist im Hauptobjekt befindet??? Das wäre doch irgendwie unschön, oder? :gruebel: Wenn es aber alles Objekte sind, die zu deiner Hauptklasse gehören, also ein Teil ihrer sind, dann sollten die auch nicht unbedingt entbehrlich sein. Oder was verstehe ich falsch? |
Re: Exception in Create-Prozedur ohne anschließendes Destroy
Keine Sorge, die Objekte sind in der Klasse definiert.
Und doch kann es sein, dass es einige der Unterobj nicht gibt, da das eben Fallspezifisch ist. Es sind entbehrliche und optionale Teile, die nur unter gewissen Umständen verfügbar sind oder eben nicht. Und die Exceptions brauche ich, um im implementierenden Programm auf das Nichtvorhandensein im Einzelnen reagieren zu können. Die Zustände, ob ein Objekt existieren darf, überprüft das Objekt aber erst beim Erstellen selber, da diese Funktionalität in den Funtkionsumfang des Unterobjekts gehört. Ich glaube, ich löse das irgendwie anders :) |
Re: Exception in Create-Prozedur ohne anschließendes Destroy
Hoi erstmal!!!
@robvs so eine Art Problem wie du es hast habe ich momentan auch. In meinen Augen ist es eher ein Designproblem, wie du damit umgehen solltest, falls eine exception im create constructor aufgerufen wird. Denke eine Möglichkeit für dich wäre dir eine eigene Funktion keinen Konstruktor zum erstellen zu basteln, von wo aus du deinen Konstruktor aufrufst. schau dir einmal folgenden link an: ![]() für mich stellt sich eher die frage wie man so eine Exception am besten fängt. In meinen Augen darf man dafür jedes mal für jedes Objekt (dass im Konstruktor eine Exception werfen kann) folgendes machen:
Code:
Oder gibt es dafür eine elegantere Lösung, wenn man eine Exception im Konstruktor hat?
function doSomething(const toCheck:integer):boolean;
var lala:TCMyClass;// toCheck ist z.b. integer der nur von 5-19 gehen soll ansonsten exception begin result:=false; try lala:=TCMyClass.Create(toCheck); except lala:=nil; exit; end; try lala.doWork(); finally FreeAndNil(lala); end; end; Gruß, Mario |
Re: Exception in Create-Prozedur ohne anschließendes Destroy
neuen thread zur frage erstellt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz