나는 PDO PHP는 트랜잭션 코드를 쓰고 있어요 그리고 난 그런 캐치 부분을 작성 계속 :PDOException 클래스가 Exception 클래스를 상속합니까?
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 클래스를 상속합니까?
예외 처리에서 가능한 한 정확해야합니다. 'Exception'은 어떤 종류의 예외도 잡을 수 있습니다. 예를 들어,'ScriptFailedForSomeRandomReasonUnrelatedToYourDatabase'라고 가정 해 봅시다. 여러분의 databasetransaction을 취소하는 에러 처리는 좋지 않을 것입니다. –
[PDOException] (http://php.net/manual/en/class.pdoexception.php)는 [RuntimeException] (http://php.net/manual/en/class.runtimeexception.php)에서 [Exception ] (http://php.net/manual/en/class.exception.php). 프란츠가 말했듯이, 예외 만 잡으면 예상보다 더 많이 잡을 수 있습니다. –
@PatrickQ 그게 당신이 트랜잭션을 롤백하려는 것입니다 –