Many great answers already. I would just like to add that, if you want to get some return code separate from the object itself as a result of invoking a constructor, you can wrap the constructor in a factory method
which, upon creation, could for example do some data validation within the constructed object and return a boolean
depending on the outcome.