When is it right for a constructor to throw an exception? (Or in the case of Objective C: when is it right for an init\'er to return nil?)
It seems to me that a cons
See C++ FAQ sections 17.2 and 17.4.
In general, I have found that code that is easier to port and maintain results if constructors are written so they do not fail, and code that can fail is placed in a separate method that returns an error code and leaves the object in an inert state.