2011-10-18 19 views
1

愚蠢的問題:在我的代碼中,我收集了要在緩衝區中顯示在視圖中的所有消息。在代碼下面,如果我的Try {}失敗並直接進入Catch {},那麼錯誤將被緩衝,但控制器不會有機會分配給視圖,對吧?你們如何解決這種情況?在例外情況下打印以查看

MyController 
{ 
//... 

try { 
    // ... do something 

    $this->_messages[] = array('success', 'Thank You.'); 
}  
catch (Exception $e) { 
    $this->_messages[] = array('error', 'Oops! There was an error.'); 
} 

/** 
* flush all buffered messages to the view 
*/ 
$flashmsg = $this->_flashMessenger->getMessages(); 
if (!empty($flashmsg)) $this->_messages[] = $flashmsg[0];  
$this->view->messages = $this->_messages; 
} 

回答

1

我不喜歡這種方法! 在我的應用程序中,如果有什麼東西進入catch意味着應用程序已損壞,那麼記錄錯誤並重定向到查看類型「糟糕...對不起」! 當我打印到消息視圖時,對於應用程序流的內在邏輯總是有意義的,對於我來決定消息類型(成功或失敗)而不是抓住!

+0

這裏發生數據庫繁忙併且查詢超時。在這種情況下,您會生成一個異常,但不需要完成應用程序,只需通知客戶再試一次。除非我在實際完成Oops之前自動將應用程序自動重新嘗試3次......有趣。謝謝。 –