【问题标题】:Symfony 3 exceptions without error 500Symfony 3异常没有错误500
【发布时间】:2016-07-14 07:56:10
【问题描述】:

在 symfony 3 中是否可以在没有内部服务器错误的情况下生成异常?

我想对这个异常执行一些操作(添加到数据库),但不要停止执行应用程序。

【问题讨论】:

  • 只要你catch异常,我看不出应该是什么问题。

标签: php symfony exception


【解决方案1】:

我假设您想要做的不仅仅是catch 一个异常,而是处理(在您的情况下:记录)一个未捕获异常。

这是一种常见情况,因此在in the cookbook 中进行了解释。基本上,您创建一个事件侦听器类,将其注册为“kernel.event_listener”事件的服务。

【讨论】:

    【解决方案2】:

    我也在为此苦苦挣扎,因为我正在生成自定义构建的异常,但无论我做什么,Symfony 都会返回 500 的 http 状态。我正在以受控方式处理错误,只需要通知用户,这更像是状态 200 响应,因为它是给用户的消息。

    无论如何我发现这不起作用:

    $event->setResponse(new Response(json_encode($returnArray), 200));
    

    但是如果我添加了一个标题,它会起作用,Symfony 稍后会查找这个标题并尊重它。如果你使用 /Exception 而不是 /HttpException

    ,如果没有标头,Symfony 只会分配 500
    $event->setResponse(new Response(json_encode($returnArray), 200, array('X-Status-Code' => 200)));
    

    我对这个异常还是新手,所以如果我做错了什么,请告诉我,但该标题解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2021-12-08
      • 2017-07-13
      • 1970-01-01
      • 2018-02-07
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2018-10-31
      相关资源
      最近更新 更多