The code

throw new Zend_Exception('test'); 

in the predispatch hook of a plugin returns

Fatal error: Uncaught exception 'Zend_Exception' with message 'test'  …

I am registering my plugins via $frontController->registerPlugin() method.

Is this not the expected behaviour?



Jason Webster wrote:
> 
> The Plugin Broker (Zend_Controller_Plugin_Broker) _should_ catch any 
> exceptions thrown by controller plugins. Well, not should, it does. 
> Perhaps this is an issue with how you're instantiating your plugins??
> 
> Waigani wrote:
>> Thanks for the run down. Is it possible to throw an error in a plugin
>> though?
>> So far the errorController has missed it.
>>
>>
>>
>> Jason Webster wrote:
>>   
>>> Waigani wrote:
>>>     
>>>> Is it possible? I want to throw an exception in the preDispatch of a
>>>> plugin
>>>> if you are not allowed to view the page. I then want to handle that
>>>> exception via the errorController. I can wrap the $front->dispatch() in
>>>> a
>>>> try / catch and catch the exception in the bootstrap, but then how do I
>>>> forward that onto the errorController, as the front controller has not
>>>> been
>>>> dispatched? I've read the manual and other posts and have not found an
>>>> answer nor an alternative method.
>>>>   
>>>>       
>>> I think you may be misunderstanding the dispatching process of the front 
>>> controller. Here's a run down:
>>>
>>>     1.  Request/Response/Router/Dispatcher initialization
>>>     2.  routeStartup()
>>>         * call plugins registered with this hook
>>>     3.  Routing
>>>         * Updates Request object based on matched information from
>>>           routing
>>>     4.  routeShutdown()
>>>         * call plugins registered with this hook
>>>     5.  dispatchLoopStartup()
>>>         * call plugins registered with this hook
>>>         6.  preDispatch()
>>>             * call plugins registered with this hook
>>>         7.  Dispatch action
>>>             8.  action helper preDispatch()
>>>             9.  action controller preDispatch()
>>>             10. action method
>>>                 * UNLESS a _forward() or redirect has occurred
>>>             11. action controller postDispatch()
>>>             12. action helper postDispatch()
>>>         13. postDispatch()
>>>             * call plugins registered with this hook
>>>         /* repeat 6 - 13 as necessary */
>>>     14. dispatchLoopShutdown()
>>>         * call plugins registered with this hook
>>>     15. send response
>>>
>>> The preDispatch hooks of action helpers and action controllers ad re 
>>> steps 8 and 9, respectively. The ErrorHandler front controller plugin is 
>>> registered basically right away.
>>>
>>> In short, if you throw an exception in the preDispatch of a 
>>> controller/action it _will_ be caught by the ErrorHandler plugin, and 
>>> thus forwarded to the error controller.
>>>
>>>
>>>     
>>
>>   
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/handle-any-exception-with-errorController-tp20316623p20316968.html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to