correction, it is catching the exception when thrown from dispatchLoopStartup
from my plugin, but not whe it is thrown from preDispatch. Is this the
expected behaviour?
Waigani wrote:
>
> 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-tp20316623p20318547.html
Sent from the Zend Framework mailing list archive at Nabble.com.