2011-06-12 19 views
4

当我在Action Helper中抛出一个异常(例如throw new Zend_Exception('You are not allowed',403);)时,ErrorHandler将无法捕捉它。我得到了Fatal error: Uncaught exception 'Zend_Exception' with message 'You are not allowed' in..如何在动作助手中捕捉异常?

我也在frontController中设置了throwExceptions = false。

如何在Action Controller中捕获异常?

+1

将throwExceptions设置为false意味着Zend Framework本身不会抛出异常。您的代码特别抛出的异常不会受到影响。 – 2011-06-12 19:16:08

+0

你是否抛出异常来表示这是一个HTTP状态403禁止的整个请求? – hakre 2011-06-12 19:20:23

回答

3

ErrorHandler插件并非设计用于捕捉在插件或助手的错误:它被设计为捕捉发生在postDispatch()事件循环,因此,更适合于你的MVC捕捉错误的错误。

这是设计。你可能不应该在控制器助手和动作助手中抛出异常,而是坚持'手动'错误处理。

+0

那么最好使用重定向器来改变地址而不是抛出exepction? – 2011-06-12 19:29:57

+0

来源:http://framework.zend.com/manual/1.12/en/zend.controller.plugins.html#zend.controller.plugins.standard.errorhandler – mjs 2012-09-10 16:17:25