在PDO连接时捕获异常

时间:2014-07-05 11:24:21

标签: php pdo

我使用PDO进行以下连接。显然它不会连接,因为我没有指定主机或数据库(或用户或密码)

$dbh = new PDO('mysql:host=;dbname=', '', '');

..那我怎么抓住这个例外?我正在尝试这样的事情:

try {
  $dbh = new PDO('mysql:host=;dbname=', '', '');
} catch (Exception $e) {
  echo 'Error: ',  $e->getMessage(), "\n";
}

..但不显示任何消息。为什么呢?

2 个答案:

答案 0 :(得分:1)

您使用的是自定义命名空间吗?然后你需要改变

} catch (\Exception $e) {
  echo 'Error: ',  $e->getMessage(), "\n";
}

注意Exception之前的反斜杠。

答案 1 :(得分:0)

您需要传递属性ERRMODE_EXCEPTION才能在尝试失败的连接时收到异常:

$dbh = new PDO('mysql:host=;dbname=', '', '', array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));

查看PDO::__construct()的手册页以获取更多信息。

还请检查@Ali的回答!