为自定义错误抛出什么类型的异常?
What type of exception to throw for custom errors?
我有以下脚本。
根据 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
}
类似
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
}
我有以下脚本。
根据 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
}
类似
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
}