【发布时间】:2019-08-20 11:26:59
【问题描述】:
现在我正在尝试捕获这样的异常事件:
try {
echo 1 / 0;
} catch (\Exception $e){
$subs = new ExceptionSubscriber();
$this->dispatcher->addSubscriber($subs);
};
我定义了 ExceptionSubscriber,如下所示:
class ExceptionSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
KernelEvents::EXCEPTION => [
['processException', 10],
['exception', -10],
],
];
}
public function exception(ExceptionEvent $event)
{
echo 'test321';
}
public function processException(ExceptionEvent $event)
{
echo 'test123';
}
}
这是我的 services.yaml
App\EventSubscriber\ExceptionSubscriber:
tags:
- { name: kernel.event_subscriber, event: kernel.exception }
我知道我捕获的常规 PHP 异常不是内核异常事件之一,在这种情况下我必须创建自定义异常事件,对吗?
我使用EventSubscriber而不是监听器来调度事件的方式很好
我必须调度这些事件还是以某种神奇的方式将它们传递给订阅者?
【问题讨论】:
-
对不起,我刚刚坐下来,我已经受够了:P 是的,我看到了那些我仍然感到迷茫的问题,现在我正试图以某种方式导致内核异常,真的不知道如何只是还没有,但我在战斗 ;)
-
我确实通过调用一个不存在的方法导致了一个致命错误,我正在考虑如何返回 symfony 标准 500 错误页面以外的其他内容
-
好的,现在我明白了,对我来说,入口点是一个控制台,在将内核异常切换为控制台错误之后,现在它似乎可以工作了!
标签: php symfony exception symfony4