【发布时间】:2015-01-09 14:07:53
【问题描述】:
我有以下脚本。
根据http://php.net/manual/en/class.pdoexception.php,您不应该从自己的代码中抛出 PDOException。
但无论是 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
}
【问题讨论】:
-
不要认为泛型异常有什么问题。你可以抛出并捕获 RuntimeException