Короч, если ситуация неблоагоприятствует созданию объекта его не нужносоздавать... А если, например, у нас есть class MySQLQuery{ } , а база MySQL вдруг решила умереть, можно со спокойной душой выдавать исключение, т.к. мы без нее никуда. Аминь. Может закроем этот очередной холивар? А то форум что-то в послденее время как общага Лезгофта...
PHP: class DB { function create( $dsn ){ global $ReserveDB; $obj= new $this; $link= $obj->connect( $dsn ); if( !$link ) $obj= $ReserveDB->create( $dsn ); $return $obj; } }
Далеко не всегда есть возможность подключить резервный источник... Допустим, мы что-то складируем в строго определённую папку... И бац, а у нас прав-то нет на запись... Можно в базу... Опаньки, драйвер БД тоже неюзабелен... В память... Ага, Memcached отключен... Прекрасно... Вроде бы 2 обходных варианта, но очень и очень вероятно, что и они будут недоступны. Так что проще сгенерить ошибку и впасть в депрессию)
а потом тебе настучат по шапке за падение сайта... вопрос не в том, что может быть, а в том, что внешний код может лишь попросить сделать объект, а вот создавать ли его или создавать кого-то другого или не создавать вовсе - это сугубо личное дело объекта-родителя.
Я предпочту белую страницу и кучу эксепшенов в логе, чем страницу без половины контента, с разорваной вёрсткой и побитой базой...