我是否需要使用try和catch塊來顯示PHP PDO擴展的錯誤?PHP PDO:顯示錯誤
例如,使用MySQL可以usally這樣做:如果你不想使用try catch語句
if (! $query)
{
die('Oh noes!');
}
我是否需要使用try和catch塊來顯示PHP PDO擴展的錯誤?PHP PDO:顯示錯誤
例如,使用MySQL可以usally這樣做:如果你不想使用try catch語句
if (! $query)
{
die('Oh noes!');
}
,你仍然可以使用這種代碼:
$query = $db->prepare("SELECT * FROM table");
if(!$query->execute()) {
print_r($query->errorInfo());
}
你可以選擇通過PDO PDO :: ATTR_ERRMODE有錯誤呢:
$pdo->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); // Raise E_WARNING.
$pdo->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); // Sets error codes.
// or
$pdo->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // throws exception
PDO默認支持它自己的除ion Class,PDOException
。
不應該有任何理由,你爲什麼不能使用:
try{
$query = $db->prepare(...);
if(!$query){
throw new Exception('Query Failed');
}
}
catch(Exception $e){
echo $e->getMessage();
}
的原因,我只趕上Exception
是因爲PDOException
是異常的孩子。抓住父母會抓住所有的孩子。
public static function qry($sql) {
try {
$statement = $db_handle->prepare($sql);
$retval = $statement->execute();
if($statement->rowCount() >= 1) {
//do something
}else {
$errors = $statement->errorInfo();
echo $errors[2] . ", " . $errors[1] . " ," . $errors[0];
}
} catch (Exception $e) {
echo $e->getMessage();
}
}
您從不*需要*在任何地方使用try/catch,但如果您想優雅地處理異常,通常是個好主意。 – Matt 2012-08-03 13:03:56