在我们的 Api-Platform 项目的一些路由中,throw
对于一些常见的错误情况是没有异常的。
例如,在调用时POST /orders
,NewOrderHandler
如果合适,可以抛出这两个中的任何一个:
NotEnoughStock
NotEnoughCredit
所有这些异常都属于一个DomainException
层次结构。
这些异常通过使用配置正确转换400
为响应中的状态代码exception_to_status
,并且响应包含适当的错误消息。到目前为止,一切都很好。
exception_to_status: App\Order\NotEnoughStock: !php/const Symfony\Component\HttpFoundation\Response::HTTP_BAD_REQUEST App\Order\NotEnoughCredit: !php/const Symfony\Component\HttpFoundation\Response::HTTP_BAD_REQUEST
唯一的问题是异常仍然被记录为CRITICAL
错误,被视为“未捕获的异常”。这甚至在生产中也会被记录下来。
我本来期望通过转换为正确的状态代码(例如!== 500
),这些异常将被视为“已处理”,因此不会污染日志。
从处理程序中抛出异常很方便,因为它有助于处理事务性并自动生成适当的错误响应消息。它适用于网络和控制台。
这些交易不应该被视为已处理吗?是否有必要创建另一个异常监听器来处理这个问题?如果创建异常侦听器,该怎么做才不会干扰 Api-Platform 错误规范化?
慕村225694
慕尼黑的夜晚无繁华
catspeake