![]() |
exception handling im konstruktor
Hi,
wie würdet ihr am besten eine Exception im construktor handlen?
Delphi-Quellcode:
Bis jetzt sehe ich nur folgende möglichkeit:
class TCMyClass
private mInt:Integer; public constructor create(const myInt:integer); end; constructor TCMyClass.create(const myInt:integer); begin if not inRange(myInt, 5,19) then raise Exception.create('value is not in Range..'); mInt:=myInt; end;
Delphi-Quellcode:
Falls es elegantere Möglichkeiten gibt Preconditions im Konstruktor abzudecken würde
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; ich mich freuen welche zu sehen ;-) gruß konse |
Re: exception handling im konstruktor
Zitat:
Delphi-Quellcode:
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; { *** Das ist nutzlos, da du auf lala nicht mehr zugreifst und es seinen Sichtbarkeitsbereich verlässt } exit; end; try lala.doWork(); finally FreeAndNil(lala); end; end; |
Re: exception handling im konstruktor
Zitat:
passieren müssen und wo man im generellen nicht etwaitige exceptions catchen muss. Mir geht es hier vielmehr um den stil und um robusten, tranzparenten source. In diesem vereinfachtem beispiel ja, aus gewohnheit setze ich es jedoch immer auf nil, damit sowas wie assign beim weiteren verarbeiten greift.
Code:
try
lala:=TCMyClass.Create(toCheck); except lala:=nil; { *** Das ist nutzlos, da du auf lala nicht mehr zugreifst und es seinen Sichtbarkeitsbereich verlässt } exit; end; Kritik ist immer erwünscht ;-) Beste grüße Konse |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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