2011-06-12 22 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