我注意到Zend提供的Skeleton应用程序无法处理error 500
。我知道在ZF1中有一个ErrorController
来照顾它。我在网上做了一些研究,但没有找到明确的解决方案。
那么ZF2中错误处理的最佳方法是什么。它是基于每个模块还是一些全局异常/错误处理程序?
我知道另一个解决方案是将ini_set('display_errors', true);
添加到我的index.php
,但我不太喜欢这个解决方案。似乎框架应该提供一些处理错误的方法。
答案 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...
}