Так, я видимо не правильно понял суть проблемы. Вообще там сложно понять... какие-то автолоадеры и т.д. Давайте по порядку. Если у вас используется set_error_handler - то он ловит варнинги/нотисы, что-то с ними делает и.. что? Если вы не натыкали там die - то скрипт будет продолжать работать дальше. Соответственно, connect вернет false и сработает вызов исключения. Где из этой цепочки у вас проблема?
Да ну вас знаете куда! Если вам мучительно сложно поставить в нужное место вардамп, а потом убрать, делайте там что хотите со своми исключениями.
С какого перепоя варнинги не ошибки? Например, варнинги лезут, если в параметры заданы неверные типы, которые PHP не может нормально трансформировать в нужный: array -> string. Это значит, что в функции заведомо есть ошибка и она не вернёт адекватный - ожидаемый - результат.
Если warning не error значит это не error. Конечно же. А я-то дурак. И ещё раз, для не филологов, мой предыдущий комментарий:
Ох, понабегут тут... неместные. Вы хоть тему всю читали? О чем речь - видели? Или как обычно на этом форуме - только на одно сообщение хватило, и тут "прихватило"? Сформулируйте основное отличие ERROR от WARNING в PHP - и все поймете. И впредь на занимайтесь выдергиванием чего-то из контекста общения и переворачивания с ног на голову.
WARNING в PHP - это ошибка уровня предупреждения, в конфиге отчет о уорнингах так же задается параметром error_reporting со значение E_WARNING, а ERROR - это ошибка уровня ошибки и это минус языку!
Еще раз. Для внимательных. ERROR - ошибка исполнения, фатальная ошибка, скрипт должен быть остановлен. WARNING - предупреждение, скрипт может продолжать работать. Это принципиальное отличие для программиста. Говорить, что функция генерирует ошибку тогда как она генерирует предупреждение можно друзьям на лавочке. А при обсуждении поведения программы с другим программистом следует использовать формализованный язык. Если уж очень хочется использовать богатый русский язык - говорите "не фатальная ошибка". А если вообще говорить в контексте обсуждения, который вы не удосужились почитать - то там речь как раз и шла о том, что "почему проблемы с коннектом в мемкеше вызывают ошибку, которая останавливает скрипт". И ответ был про то, что эта проблема генерирует не ошибку, а предупреждение - и скрипт должен продолжать свою работу, а то, что он не продолжает - проблема рук в другом месте. Принципиальная разница.
Я. Об. Этом. И. Говорю. Это и есть ошибка. Как PHP выкинет (Ъ-ошибку в твоём понимании) fatal error с unexpected, так и варинг это unexpected, но для программиста. Если файл не найден, если входящие параметры неверного типа, если мемкэш или БД не смогли подсоединиться это всё unexpected, которые должны быть отловлены, а скрипт остановлен (программистом).
А почему он должен быть остановлен? Можно ведь попробовать (в случае с мемкешем) обратиться к альтернативному источнику данных, либо дать пользователю возможность сделать какие-то действия. Зачем останавливать?
О том expected или unexpected проблема подсоединения к мемкешу - решать уже программисту. Если уж совсем погружаться - то линейкой по пальцам таким проектировщикам, которые невозможность подсоединения к мемкешу делают фатальным - этого быть не должно.