Php ZF3是否可以记录未捕获的异常?

Php ZF3是否可以记录未捕获的异常?,php,zend-framework,zend-framework3,Php,Zend Framework,Zend Framework3,因为在另一个话题中回答是不礼貌的,所以我再次提出与此话题相关的问题: 有人说,您可以用这种方式记录任何未捕获的异常,但未捕获的异常不是会退出由PHP完成的Web服务器的进一步运行吗?我不知道这是什么,或试图做什么 public function onBootstrap(MvcEvent $e) { $eventManager = $e->getApplication()->getEventManager(); $moduleRouteList

因为在另一个话题中回答是不礼貌的,所以我再次提出与此话题相关的问题:

有人说,您可以用这种方式记录任何未捕获的异常,但未捕获的异常不是会退出由PHP完成的Web服务器的进一步运行吗?我不知道这是什么,或试图做什么

public function onBootstrap(MvcEvent $e)
    {
        $eventManager = $e->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);
        /**
         * Log any Uncaught Exceptions, including all Exceptions in the stack
         */
        $sharedManager = $e->getApplication()->getEventManager()->getSharedManager();
        $sm = $e->getApplication()->getServiceManager();
        $sharedManager->attach('Zend\Mvc\Application', 'dispatch.error',
            function($e) use ($sm) {
                if ($e->getParam('exception')){
                    $ex = $e->getParam('exception');
                    do {
                        $sm->get('Logger')->crit(
                            sprintf(
                               "%s:%d %s (%d) [%s]\n", 
                                $ex->getFile(), 
                                $ex->getLine(), 
                                $ex->getMessage(), 
                                $ex->getCode(), 
                                get_class($ex)
                            )
                        );
                    }
                    while($ex = $ex->getPrevious());
                }
            }
        );
未捕获的异常是否会退出由PHP完成的Web服务器的进一步运行


不,未捕获异常仅在标准PHP设置下停止处理当前请求,可以是mod PHP、fpm或cgi。Zend\Mvc在调度过程中捕获所有异常,并将它们提供给“dispatch.error”处理程序(您发布的代码就是这样一个处理程序,它记录异常和链中以前的所有异常)。因此,这个异常并不是完全没有问题。

好的,谢谢你的解释。因此,如果我理解正确,我需要配置我的PHP设置,使其不会在未捕获的异常中退出,而是在onBootstrap()中使用此代码当出现未捕获异常时,它仍然存在。«因此,如果我理解正确,我需要配置我的PHP设置,使其不会在未捕获异常时退出»-除非您使用类似PHP pm或ReactPHP的东西,否则您不需要任何特定的配置。«但在我的onBootstrap()中使用此代码时,当出现未捕获的异常时,它仍然存在»-没有足够的信息得出结论。在这种情况下,Zend\Mvc中很可能有一些标准处理程序显示了一些错误消息。我只在视图中启用了它,但即使视图没有显示它,它也会退出。所以我很好奇代码示例如何能够或者能够抓住这一切。