PDO连接异常捕获

时间:2012-05-12 18:13:27

标签: php exception-handling pdo try-catch

我在使用PDO时遇到了困难。我扩展了PDO类,每次连接数据库时出错(密码错误等)都没有捕获异常。

以下是当前代码:

public function __construct() {
    $dsn  = 'mysql:host=' . Config::host .
            ';dbname='    . Config::db;
    $user = Config::user;
    $pass = Config::pass;
    $opts = array(
        \PDO::ATTR_PERSISTENT => true,
        \PDO::ATTR_ERRMODE    => \PDO::ERRMODE_EXCEPTION 
    ); 

    try {
        parent::__construct($dsn, $user, $pass, $opts);
    } catch(PDOException $e) {
        echo $e->getMessage();
    }

}

以下是显示的错误:

Fatal error: Uncaught exception 'PDOException' with message 
'SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost'
(using password: YES)' in
/home/rasmus/www/n1_cms/N1/Core/Database.php on line 21

PDOException: SQLSTATE[HY000] [1045] Access denied for user
'root'@'localhost' (using password: YES) in
/home/rasmus/www/n1_cms/N1/Core/Database.php on line 21

编辑:解决方案

由于使用名称空间,它无效。

更改:

catch(PDOException $e)

要:

catch(\PDOException $e)

2 个答案:

答案 0 :(得分:2)

似乎您的命名空间中不存在类“PDOException”。尝试更改catch块:catch(\PDOException $e)

答案 1 :(得分:0)

parent::__construct($dsn, $user, $pass, $opts);

中移动try / catch