【发布时间】:2013-05-28 13:53:45
【问题描述】:
我有一段简单的代码,在 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)
有没有什么我想念的,比如针对此类异常的重载自定义异常处理函数? 请注意,当我将 PDO 代码包装在 try 和 catch 块中时,它工作正常,但我想在我的自定义异常处理程序中捕获它。
【问题讨论】:
-
我认为是因为 PDO 使用了自己的异常句柄类。
-
@hjpotter92 : 那么如何使用自定义异常处理程序捕获 PDOexcepion 呢?
标签: php exception exception-handling pdo