您可以通过创建异常侦听器并捕获 Pdo 异常来做到这一点:
服务.yml:
kernel.listener.your_pdo_listener:
class: Acme\AppBundle\EventListener\YourExceptionListener
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onPdoException }
然后监听类:
你的异常监听器
更新
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。