Общепринятая рекомендация на случай обработки ошибок, использовать try..catch
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
die('Подключение не удалось: ' . $e->getMessage());
}
Прочитал два мнения об обработке исключений в контексте такого подключения к БД:
Первое, что использовать try..catch нужно только тогда, когда вы собираетесь ОБРАБОТАТЬ ошибку - то есть, совершить какое-то действие, связанное с ФАКТОМ ошибки - откатить транзакцию, например. Для того же, чтобы просто выдать сообщение об ошибке, try..catch использовать не нужно - PHP прекрасно справится сам
Второе, ... в случае ошибки при подключении будет выброшено исключение PDOException. Если ваше приложение не перехватывает исключение PDO конструктора, движок zend выполнит стандартные операции для завершения работы скрипта и вывода обратной трассировки. В этой трассировке будет содержаться детальная информация о соединении с базой данных, включая имя пользователя и пароль.
Вопрос в следующем:
1. Означает ли это, что в связи с возможным перехватом конфиденциальной информации, все-таки стоит делать перехват исключения (даже если нет особых причин для обработки исключения), так как светить пароль в ответе обратной трассировки, конечно нет желания?
PS: Нет, к сожалению понимания, о чем речь – когда упоминается об опасности вывода в обратной трассировке пароля, о том, куда идет вывод обратной трассировки, кто и каким образом может там покопаться?
По смутным ощущениям, трассировка - это тема zend framework, но не очень хотелось бы на этом этапе углубляться, да и может это и не то?