flapflapjack
@flapflapjack
на треть я прав

Почему не перехватывается исключение PDO?

С наступающим, товарищи знатоки!

Версия PHP 5.13

Есть подключение к БД:

$opt = array(
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false,
        );
        $dsn = "mysql:host={$params['mysql']['host']};dbn1ame={$params['mysql']['dbname']}";
        try {
            $this->db = new PDO($dsn, $params['mysql']['user'], $params['mysql']['pass'], $opt);
        } catch (PDOException $e) {
            echo "Хьюстон, у нас проблемы."; 
            #echo $e->getMessage();
        }


в строке $dsn - dbn1ame это заведомо специально созданная ошибка (добавлена единичка).

В итоге на страничке вылазит ошибка PDO Fatal error: Uncaught exception 'PDOException' (ошибка выбора каталога БД).

Будто бы try - catch ка кне бывало.

Что я сделал не так?
$params определен в коде выше, и если единичку убрать - ошибки нет. Но чего это она не перехватывается то?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Версия PHP 5.13

Не существует такой.

mysql позволяет соединяться без указания имени базы данных. Имя базы данных можно выбрать позже.
pdo_mysql не ругается на неизвестные параметры в DSN.
У всех всё хорошо, а раз никто не кинул exception - то чего тут ловить try catch?

А ошибку вы получаете где-то дальше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы