15

我注意到 Zend 提供的 Skeleton Application 无法处理error 500. 我知道在 ZF1 中有一个可以解决ErrorController这个问题。我在网上做了一些研究,但没有找到一个明确的解决方案。

那么ZF2中错误处理的最佳方式是什么。它是基于每个模块还是一些全局异常/错误处理程序?

我知道另一种解决方案是添加ini_set('display_errors', true);到 myindex.php中,但我不太喜欢那个解决方案。框架似乎应该提供一些处理错误的方法。

4

1 回答 1

31

您可以在捕获异常后以任何方式处理异常,如下例所示,您将在全局范围内捕获异常...:

在您的onBootstrap方法中,您Module.php可以附加一个函数以在事件发生时执行,以下附加一个函数以在引发错误(异常)时执行:

public function onBootstrap(MvcEvent $e)
{
    $application = $e->getApplication();
    $em = $application->getEventManager();
    //handle the dispatch error (exception) 
    $em->attach(\Zend\Mvc\MvcEvent::EVENT_DISPATCH_ERROR, array($this, 'handleError'));
    //handle the view render error (exception) 
    $em->attach(\Zend\Mvc\MvcEvent::EVENT_RENDER_ERROR, array($this, 'handleError'));
}

然后定义函数以您想要的任何方式处理错误,以下是一个示例:

public function handleError(MvcEvent $e)
{
    //get the exception
    $exception = $e->getParam('exception');
    //...handle the exception... maybe log it and redirect to another page, 
    //or send an email that an exception occurred...
}
于 2013-06-04T04:19:29.527 回答