Zend框架2推荐了错误处理方法

时间:2013-06-03 05:33:08

标签: php zend-framework error-handling zend-framework2

我注意到Zend提供的Skeleton应用程序无法处理error 500。我知道在ZF1中有一个ErrorController来照顾它。我在网上做了一些研究,但没有找到明确的解决方案。

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

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

1 个答案:

答案 0 :(得分:30)

您可以在捕获异常之后以任何方式处理异常,如以下示例中全局捕获异常...:

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...
}