Когда правильно, чтобы конструктор выбрал исключение? (Или в случае Objective C: когда правильно для init'er возвращать нуль?)
Мне кажется, что конструктор должен потерпеть неудачу - и таким образом отказаться от создания объекта - если объект не завершен. I.e., конструктор должен иметь контракт со своим абонентом, чтобы обеспечить функциональный и рабочий объект, по которому методы можно назвать значимо? Это разумно?