In einem Konstruktor hat
imho die Logik nix zu suchen.
Instantiiere das Objekt, prüfe ob es legal ist und schmeiss es weg.
Oder erledige die Prüfung vorher über eine Class Function.
Ich meine, ich fang doch nicht an, mir eine Pizza zu machen, wenn ich dann feststelle, das kein Käse da ist. Entweder will ich ne Pizza machen (Instantiierung), Checke die Zutaten (Prüfung) und verwerfe ggf. meinen Plan (Destroy), oder ich prüfe (Class Function), ob alle Zutaten für die Pizza vorhanden sind und mache mich DANN ggf. ans Werk (Instantiierung).
Grad heute hatten wir eine solche Grundlagendiskussion. Unser Fazit: Logik raus aus dem Konstruktor.
Eine Class Factory ist in jedem Fall auch eine Alternative und auch besser geeignet, die Logik (Soll ich? Soll ich nicht?) zu kapseln.