2011-05-18 25 views
0

當我在View Helper中拋出異常時,它不會被ErrorController捕獲。 (我收到一個關於未捕獲異常的醜陋消息。)在Zend View Helpers中處理錯誤

我在某處讀取ErrorController不會捕獲插件中的錯誤。這同樣適用於View Helpers嗎?

在View Helper中處理異常的最佳策略是什麼?

謝謝!

+0

你正在查看的應該不是處理數據,只是顯示它。您應該在控制器中處理所有數據處理。 – Ashley 2011-05-18 13:23:56

+1

@Ashley傳遞給視圖的數據可能不正確,因此,如果傳遞給它的數據無效,那麼期望某種類型的數據的視圖助手仍可能會拋出異常。所以我想說沒有理由不在視圖中出現異常。 – 2011-05-19 22:53:21

回答

1

事情是錯誤由ErrorHandler插件處理。所以,如果發生任何錯誤,iit必須在errorHandler調用後發生。所以,如果你的任何插件失敗,那麼errorHandler會被註冊,它不會工作。 errorHandler的功能AFAIK沒有其他例外。

1

對於爲什麼沒有被抓住,以錯誤控制的原因,我不是100%肯定,但是這是我最好的猜測沒有尋找到它更多:

視圖從視圖解析器插件渲染,或者Zend_Layout插件(如果它是佈局的話),所以這可能就是爲什麼你會收到錯誤信息 - 正如你所說的那樣,插件引發的異常不能正確地捕獲到錯誤控制器中。

您可能應該將視圖中的錯誤視爲編程錯誤,因此您可能會拋出通用的「應用程序錯誤」類型的錯誤消息。你可以通過使用set_error_handler/set_exception_handler達到這個目的。