PHP, PDO и исключения

В настоящее время я немного дилемма относительно PDO. Недавно я переключился на его использование из своего собственного класса базы данных, поскольку я хочу воспользоваться транзакциями. Проблема, с которой я сталкиваюсь, заключается в том, как выкидывать исключения изнутри кода кода, который уже завернут с try / catch для PDO. Вот пример …

try { // PDO code // Transaction start // Throw manual exception here if error occurs (transaction rollback too) // Transaction commit } catch (PDOException $e) { // Transaction rollback // Code to handle the exception } 

Принимая приведенный выше пример кода и имея в виду, что в руководстве PHP говорится; «Вы не должны бросать PDOException из своего собственного кода». Как я могу обрабатывать свои собственные исключения и PDO? Какой-то гнездование?

Related of "PHP, PDO и исключения"

 try { // PDO code // Transaction start // Throw manual exception here if error occurs (transaction rollback too) throw new MyException("all went tits up"); // Transaction commit } catch (PDOException $e) { // Transaction rollback // Code to handle the exception } catch (MyException $e) { // Transaction rollback // Code to handle the exception } 

Дело в том, что у вас будет дублированный код, который не будет хорошо пахнуть. Я бы порекомендовал просто ловлю «Исключение», например:

 try { // PDO code // Transaction start // Throw manual exception here if error occurs (transaction rollback too) throw new MyException("all went tits up"); // Transaction commit } catch (Exception $e) { // Transaction rollback // Code to handle the exception } 
 try{ //code here } catch(PDOException $e){ //handle PDO throw $e; //to rethrow it upper if need } catch(Exception $e){ //handle any other } 

Если что-то пойдет не так, PDO создаст исключение. Но если вы внесете некоторые изменения в db и хотите вернуть все, что вы можете запустить

 throw new PDOException(....);