В зависимости от конфигурации PDO использует эмулированные подготовленные операторы.Следовательно, сам вызов ->prepare
не будет вызывать исключение.Вот почему вы должны обернуть prepare
и ->execute
в один и тот же блок try{}
.
По моему опыту с реально подготовленными запросами, редко встречаются исключения только для вызова ->execute
Обычно это неправильный SQL-запрос.Однако это проблема разработки, а не проблема времени выполнения, поэтому отлов исключений для подготовки кажется менее логичным.
В любом случае, я бы посоветовал обернуть оба варианта, если вы действительно не сможете найти способ восстановления в дваотличается от проблемы (что IMHO вряд ли для SQL ->prepare
и синтаксических ошибок.)