在我的应用程序的Module.php的onBootstrap
中,我在EVENT_DISPATCH和EVENT_DISPATCH_ERROR事件上注册了一个函数onErrors
。在我的任何模型中,如果我抛出自定义错误,Zend将为我和onErrors
函数捕获它,我可以处理错误(显示错误页面,以json返回错误消息等)。这种方法很好,除非在Smarty使用的函数中抛出错误。在这种情况下,我仍然最终在onErrors
,但McvEvent->exception
为NULL,我收到此错误:
致命错误:未捕获的异常' Application \ Exception \ InternalServerErrorException'在 /........../module/Smarty/src/Smarty/View/Renderer.php:90堆栈追踪:
#0 /........../vendor/zendframework/zendframework/library/Zend/View/View.php(205): Smarty \ View \ Renderer->渲染(对象(Zend \ View \ Model \ ViewModel))
#1 /\ n = / / / / / / / / / / / / / / / / / / / / / / / / Zend \ View \ View-> render(Object(Zend \ View \ Model \ ViewModel))
#2 [内部功能]: 的Zend \的mvc \视图\ HTTP \ DefaultRenderingStrategy->呈现(对象(的Zend \的mvc \ MvcEvent))
#3 /........../vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array,Object(Zend \ Mvc \ MvcEvent))
#4 /........../vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): 的Zend \ eventmanager进行\ EventManager-> triggerListeners(' render.error&#39 ;, Object(Zend \ Mvc \ MvcEvent),Array)
#5 / .......... in 第90行的/........../module/Smarty/src/Smarty/View/Renderer.php
这里发生了什么?为什么Zend没有为我发现这个错误?