【问题标题】:Persist entity after catching Doctrine exception捕获 Doctrine 异常后持久化实体
【发布时间】:2021-02-10 02:32:35
【问题描述】:

我正在尝试在运行 Symfony 4 的网站上创建一个日志系统。 每次抛出异常时,我都会将其捕获到侦听器中,然后创建一个包含异常值的 Log 实体,并通过电子邮件将其发送给我。

但事实是当异常是 Doctrine PDO Exception 时,flush 似乎会使应用程序崩溃。 我的意思是,刷新确实有效,但所有代码 after 都没有执行(邮件未发送,重定向不起作用,...)。

如果我评论刷新,一切正常(当然除了我没有让我的实体持久化)。

我尝试clear() EntityManagerInterface ;创建一个新的;没有任何效果。

有什么想法吗?

谢谢!

【问题讨论】:

    标签: exception doctrine listener symfony4 flush


    【解决方案1】:

    我终于明白了。做我想做的事没有问题。我的问题来自一个我忘记的听众,正在听 Doctrine postFlush 方法。当我尝试刷新我的 Log 实体时,监听器被调用,并运行了另一个 SQL 查询,该查询也引发了异常。

    由于我已经通过了kernel.exception 事件,这个事件没有被捕获,服务器只显示了一个 500 页。

    现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 2016-02-13
      相关资源
      最近更新 更多