为自定义错误抛出什么类型的异常?

时间:2015-01-09 14:07:53

标签: php exception

我有以下脚本。

根据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
}

1 个答案:

答案 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
}