Объект существует, но он не был правильно инициализирован.
Это может происходить всякий раз, когда this
протекает во время строительства (не только когда вы бросаете исключение).
Это очень проблематичная ситуация, потому что некоторые общепринятые гарантии не выполняются в этой ситуации (например, final
поля могут изменить свое значение во время построения).
Следовательно, вам определенно следует избегать утечки this
в конструкторе.
Эта статья IBM developerWorks описывает меры предосторожности, которые необходимо соблюдать при построении объектов, и обоснование этих мер предосторожности. Хотя в статье обсуждается этот вопрос в свете многопоточности, в однопоточной среде могут возникать похожие проблемы, когда неизвестный / ненадежный код получает ссылку на this
во время построения.