Хорошо ли игнорировать (@) ошибки, возникающие из-за внешних факторов?

У меня есть запрос к серверу LDAP в моем коде. Я открываю связь с ldap_connect и проверить, что возвращенный дескриптор действителен, но затем я делаю поисковый запрос с ldap_search используя открытый дескриптор. Но иногда из-за сбоя в сети или чего-то еще, ldap_search не с предупреждением Search: Can't contact LDAP server,

На моем рабочем сервере я воспринимаю все предупреждения как фатальные ошибки, поэтому весь рендеринг страницы не выполняется.

Должен ли я просто подготовить ldap_search с @ и просто проверьте возвращаемое значение (я проверяю это сейчас), или есть лучший способ справиться с этим?

2 ответа

Решение

Вы можете превратить предупреждения в исключения, установив собственный обработчик ошибок. Просто перехватите все предупреждения и добавьте исключение в обратный вызов. Таким образом, вам не придется иметь дело с нежелательными выходными данными, но у вас есть шанс восстановить (направить пользователя на страницу с временными ошибками), чего нельзя сделать с фатальными ошибками.

Иногда внешний ресурс выдает предупреждение, а также позволяет проверить, произошла ли ошибка (например, mysqli.) В этом случае вы можете проигнорировать предупреждение с помощью @, но обязательно проверьте, произошла ли ошибка.

Я бы не просто подавил предупреждение, не убедившись, что оно обрабатывается другим способом. Пользователи хотят знать, почему что-то пошло не так, особенно если ситуация носит временный характер.

В качестве примечания: я думаю, что предупреждения в php являются нелепой концепцией. Код либо не работает, либо нет. Если это не удастся, я хочу быть в состоянии справиться с этим, не прыгая через обручи. Просто брось мне исключение, пожалуйста!

Лично я бы с тобой согласился, просто засунь @ там и вручную проверяю на наличие ошибок - делаю это для mysql_connect а также Memcache->connectи любой fsockopen звонки, которые я делаю, так как это может также позволить такие вещи, как "повторите попытку несколько раз, прежде чем умереть".

Тем не менее, я уверен, что большинство орехов скажет вам, что вы никогда не должны использовать @ и вы должны использовать вместо этого пользовательские обработчики ошибок. Так что... до вас!

Другие вопросы по тегам