我有以下脚本。
根据http://php.net/manual/en/class.pdoexception.php,您不应该从自己的代码中抛出PDOException。
但我想要执行相同的catch,无论是PDOException还是我为无效的foo抛出的异常。
我还被告知我永远不应该捕获通用异常,但只能捕获特定的异常。
应如何实施?
try {
db::db()->beginTransaction();
//Do a bunch of queries, and a PDO exception will be thrown upon error
if($foo($bar)) {throw new Exception('Invalid foo.');}
db::db()->commit();
} catch (PDOException $e) {
db::db()->rollBack();
//Maybe do some other stuff
}
答案 0 :(得分:0)
像
这样的东西try {
db::db()->beginTransaction();
//Do a bunch of queries, and a PDO exception will be thrown upon error
if($foo($bar)) {throw new RuntimeException('Invalid foo.');}
db::db()->commit();
} catch (PDOException $e) {
db::db()->rollBack();
//Maybe do some other stuff
} catch (RuntimeException $e) {
//foo invalid
}