throw exceptions is not on and I've also tested the dispatchLoopStartup in
the plugins broker. It is not catching the exception.



Waigani wrote:
> 
> 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-tp20316623p20317954.html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to