2

我已经开始在当前的 dev-develop 分支中使用 ZF2 的开发版本,从那时起,我在每个异常上都会出现白屏,并在视图的某个地方抛出。

我已经安装了 SkeletonApplication 来查看,如果它是我的应用程序中的某些东西,那是导致它的原因,但同样的问题也出现在那里。降级到 dev-master 解决了这个问题,我得到了标准的异常转储。

查看 zf2 代码,我想我已经找到了原因。在 Zend\Mvc\View\Http\DefaultRenderingStrategy::render() 现在我们有:

public function render(MvcEvent $e)
{
    ......
    try {
        $view->render($viewModel);
    } catch(\Exception $ex) {
        $application = $e->getApplication();
        $events      = $application->getEventManager();
        $e->setError(Application::ERROR_EXCEPTION)
          ->setParam('exception', $ex);
        $events->trigger(MvcEvent::EVENT_RENDER_ERROR, $e);
    }
    return $response;
}

所以异常被捕获,但响应是空的,我不知道后者的原因。

但是出现了另一个问题:如果在布局中触发错误,错误处理程序将如何呈现异常页面?(就像在我的情况下 - 导航助手,它无法找到容器。)唯一可能的解决方案是有一个额外的错误布局,但这是没有意义的,因为不再存在良好的异常处理的原因。

于是产生了以下问题:

  1. ZF2 开发者打算如何解决这个问题?
  2. 是否有当前的解决方法(实际上注释掉 try { } catch() { } 可以解决问题,但不是一个好的解决方案)
  3. 由于带来上述代码的拉取请求已关闭,我是否在做任何完全错误的事情,我对它的工作方式是否完全错误?
4

1 回答 1

-1

检查您的 zf2 配置文件以确保您已打开异常显示选项:

'view_manager' => array(
    'display_not_found_reason' => true,
    'display_exceptions'       => true,
),
于 2012-12-20T02:52:04.390 回答