【发布时间】:2016-07-14 07:56:10
【问题描述】:
在 symfony 3 中是否可以在没有内部服务器错误的情况下生成异常?
我想对这个异常执行一些操作(添加到数据库),但不要停止执行应用程序。
【问题讨论】:
-
只要你
catch异常,我看不出应该是什么问题。
在 symfony 3 中是否可以在没有内部服务器错误的情况下生成异常?
我想对这个异常执行一些操作(添加到数据库),但不要停止执行应用程序。
【问题讨论】:
catch异常,我看不出应该是什么问题。
我假设您想要做的不仅仅是catch 一个异常,而是处理(在您的情况下:记录)一个未捕获异常。
这是一种常见情况,因此在in the cookbook 中进行了解释。基本上,您创建一个事件侦听器类,将其注册为“kernel.event_listener”事件的服务。
【讨论】:
我也在为此苦苦挣扎,因为我正在生成自定义构建的异常,但无论我做什么,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)));
我对这个异常还是新手,所以如果我做错了什么,请告诉我,但该标题解决了我的问题。
【讨论】: