使用自定义异常处理程序捕获“PDOException”

时间:2013-06-02 03:04:38

标签: php exception exception-handling pdo

我有一段简单的代码,在PHP中使用PDO:

$conn = new PDO('mysql:host=localhost;dbname=someDatabase', $username, $password, 
        array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_PERSISTENT => false,
    ));

和这个自定义异常处理程序:

function my_exceptionHandler($exception) {
    echo "Exception: {$exception->getMessage()}";
}
set_exception_handler("my_exceptionHandler");

虽然自定义异常处理程序捕获所有其他异常,但它无法捕获PDO异常,即当数据库的用户名和密码不正确时,我只是得到明显的错误:

SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) 

对于这种类型的异常,是否有任何我想念的重载自定义异常处理函数? 请注意,当我在PD和catch块中包装PDO代码时,它工作正常,但我想在我的自定义异常处理程序中捕获它。

1 个答案:

答案 0 :(得分:1)

  

SQLSTATE [HY000] [1045]用户'root'@'localhost'拒绝访问(使用密码:YES)

如果您有完整且完整错误消息 - 那么有一些您自己的代码(很可能是全局try..catch)会打印出捕获的错误。
(如果没有 - 请,请正确提出问题,提供完整和完整的错误消息 - 所以,我们将能够帮助您。)