Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.02.2015, 18:52
Аспирант
Отправить личное сообщение для bartonom Посмотреть профиль Найти все сообщения от bartonom
 
Регистрация: 05.05.2011
Сообщений: 48

Подключение к БД, PDO и обработка исключения
Общепринятая рекомендация на случай обработки ошибок, использовать 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, но не очень хотелось бы на этом этапе углубляться, да и может это и не то?
Ответить с цитированием
  #2 (permalink)  
Старый 14.02.2015, 23:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

1. Означает ли это, что в связи с возможным перехватом конфиденциальной информации, все-таки стоит делать перехват исключения (даже если нет особых причин для обработки исключения)

Да. даже если нет особых причин - ожидания могут и не оправдаться, а подключение, это не единственное место где может произойти исключение - светить ошибки возникающие при работе с базой тоже не есть хорошо, скорее вредно.
Ответить с цитированием
  #3 (permalink)  
Старый 14.02.2015, 23:24
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

перехватывать исключения нужно
а вот выводить сообщения исключений стоит в режиме отладки
или писать в лог или отправлять отчет об ошибке на почту
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка нажатия на элемент и его родитель klev2004 Общие вопросы Javascript 3 12.12.2012 20:07
обработка исключений jetli13 Общие вопросы Javascript 9 01.10.2010 12:29