Um ganz ehrlich zu sein: Mir ist so ein
Pseudo-Konstruktor, dessen eigentliche Arbeit dann im Endeffekt wieder von einer ganz normalen Instanzmethode übernommen wird, auch
nicht wirklich sympathisch. Bislang sehe ich nur, dass man es
besser nicht tun sollte, aber einen wirklichen Grund habe ich nicht.
Noch vor der ersten Zeile im Konstruktor sind Instanzmember bereits mit einem Standardwert initialisiert. Zahlen sind Null, Objekte nil und Strings sind '' (richtig?). Meine Frage ganz am Anfang kam von Verwirrung und der falschen Annahme, das sei nicht der Fall.
In meinem ganz konkreten Fall hat der Konstruktor die
Exception sogar absichtlich geworfen: Unter den gegebenen Umständen war eine Erstellung eines sinnvollen Objekts nicht möglich. Kurioserweise war die Erstellung dieses Objekts (auf Umwegen) wiederum Bestandteil des Konstruktor eines anderen Objekts.
Wo liegt nun der Unterschied, wäre der Konstruktor hier nicht mit einer
Exception ausgestiegen sondern hätte ein quasi nutzloses Objekt mit einem Flag "ichBinNichtZuGebrauchen:Bool" ausgespuckt? Im Endeffekt ist das doch noch aufwändiger und unübersichtlicher (und wahrscheinlich sogar fehleranfälliger) zu handhaben als eine "stinknormale"
Exception.