我有一个这样的脚本:
try {
$stm = $dbh->prepare("INSERT .. SELECT query");
$stm->execute();
if ( $stm->rowCount() > 0 ) {
echo 'inserted';
} else {
throw new Exception('No rows inserted');
}
} catch(Exception $e) {
echo $e;
}
如您所见,catch
阻止只访问我设置的Exception
。实际上我还需要访问PDO异常。像这样:
} catch(Exception $e, PDOException $pdo) {
echo isset($pdo) ? "other message: " . $e : null;
echo isset($e) ? "PDO message: " . $pdo : null;
}
如您所知,我目前的语法错误。我在谈论catch(Exception $e, PDOException $pdo)
。那有什么解决方法吗?
答案 0 :(得分:4)
您可以使用多个catch块
catch(PDOException $pdo) {
echo $pdo;
}
catch(Exception $e) {
echo $e;
}
或者你仍然可以保留一个阻止障碍,并从 instanceof
获取帮助catch(Exception $e) {
if($e instanceof PDOException)
// pdoexception
else
// others
}