If an exception is thrown withing a constructor which is creating (remember, constructors can be called on instances normally as methods), then the new instance is freed automatically.

There's nothing wrong with raising exceptions this way, unlike in C++ where you end up with possible stack/heap mess.