PDO 是基于向对象方式,那么错误处理也最好使用面向对象的方式来处理。在 PDOException 中定义了如下方法用于捕获错误信息:
| 方法 | 说明 |
|---|---|
| getMessage() | 取得文本化的错误信息 |
| getCode() | 取得 SQLSTATE 错误代号 |
| getFile() | 取得发生异常的文件名 |
| getLine() | 取得 PHP 程序产生异常的代码所在行号 |
| getTrace() | backtrace() 数组 |
| getTraceAsString() | 取得已格成化成字符串的 getTrace() 信息 |
例子:
<?php
try{
//构造PDO连接
$dbh = "mysql:host=localhost;dbname=test";
$db = new PDO($dbh, 'root', 'root123123'); //密码错误
} catch (PDOException $e) {
print "错误: ".$e->getMessage()."<br />";
print "行号: ".$e->getLine()."<br />";
die();
}
?>
运行该例子,浏览器输出:
错误: SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES) 行号: 5