Как правильно организовать обработку ошибок на PHP?
Занялся вопросом обработки ошибок в своем приложении. Читаю статьи на эту тему, как вообще принято обрабатывать ошибки и т.д. Заодно изучил механизм исключений. В итоге у меня возник один принципиальный вопрос. Вопрос общего, я бы даже сказал, понятийного плана.
Когда специалисты рекомендуют использовать механизм генерации исключений (речь идет о php), т.е. использование try – catch, то говорят, что код, в котором может возникнуть проблема или ошибка, нужно помещать в оператор try и генерировать исключение. Правильно я понимаю, что речь идет о тех местах кода, где вероятно возникновение ошибки, независящей от программиста, ну например открытие файла, которого может не существовать или подключение к базе данных, сервер которой может быть не доступен. В этих случаях советуют генерировать исключения, чтобы, как я понял, не пугать пользователя сайта php-шными сообщениями об ошибках, а выводить свои «дружественные» сообщения.
Вопрос в следующем: многие советуют писать все ошибки в лог. О каких ошибках идет речь? Именно о тех, для которых мы генерируем исключения? Или же другие ошибки типа всяких Warning-ов и Notice-ов (например, деление на 0, использование не обьявленной переменной и т.д.). Эти ошибки надо писать в лог, чтобы потом он помогал программисту разобраться с проблемами?
Вообще существуют ли какие-нибудь традиционные схемы обработки ошибок для php?
Внесу немного ясности:
- Есть ошибки и есть исключения - это два разных подхода.
- Т.к. PHP не везде использует исключения, то нужно мониторить ошибки.
- Т.к PDO и многие другие модули используют исключения, то их тоже нужно мониторить.
- Логировать ошибки и исключения нужно всегда, чтобы своевременно исправлять баги.
- Логи проще всего (и лучше всего) писать в файлы. Можно использовать несколько файлов (я лично разделяю на ошибки PHP и исключения работы с БД).
- Как это выглядит в коде выше написали