我正在写一个pdo php事务代码,我一直在编写catch部分:
try{
$this->db->beginTransaction();
//Some transaction code
$this->db->endTransaction();
} catch(Exception $e){
$this->db->cancelTransaction();
} catch (PDOException $e){
$this->db->cancelTransaction();
}
代码效果很好,但我觉得这不符合逻辑。仅仅使用catch(Exception $ e)并删除catch(PDOException $ e)部分就足够了吗? PDOException类是否继承了Exception类?
答案 0 :(得分:1)
是的,它继承了。是的,这不符合逻辑。是的,只使用catch(Exception $ e)
就足够了答案 1 :(得分:0)
PDOException扩展RuntimeException,扩展Exception。所以你的代码不符合逻辑,第二次捕获永远不会工作。只需使用catch(Exception $e)
即可。但是如果你想要不同的处理方式,你需要采取以下方式
<?php
try {
$this->db->beginTransaction();
//Some transaction code
$this->db->endTransaction();
} catch (PDOException $e) {
echo "DataBase Error:".$e->getMessage();
} catch (Exception $e) {
echo "General Error".$e->getMessage();
}
?>