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