これを行うには、例外リスナーを作成して Pdo 例外をキャッチします。
service.yml:
kernel.listener.your_pdo_listener:
class: Acme\AppBundle\EventListener\YourExceptionListener
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onPdoException }
次にリスナークラス:
YourExceptionListener
更新しました
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
class YourExceptionListener
{
public function onPdoException(GetResponseForExceptionEvent $event)
{
$exception = $event->getException();
if ($exception instanceof \PDOException || $exception->getPrevious() instanceof \PDOException) {
//now you can do whatever you want with this exception
}
}
}
からのスニペット: Symfony2 でデータベースの例外をキャッチする
私はさらにテストを行ったので、最初に行ったテストはデータベースへのクエリを作成することでした。そのため、最初の例外として pdoexception を取得しましたが、データベースに接続できなかった場合に twig がランタイム例外をスローすることを知っているため、twig 例外になることがあります。しかし、うまくいけば、以前の例外も取得でき、これは PDO の後にスローされる可能性のある他の例外で機能する可能性があるため、期待どおりに機能することを願っているので、以前の例外が PDOException であるかどうかを確認するようにコードを編集しました。