2013-07-30 58 views
2

我想使用兩種不同類型的異常在我的項目:如何區分CodeIgniter中的錯誤異常和致命異常?

  1. 致命例外。如果出現意想不到的錯誤,比如mysql查詢失敗,我想拋出這種異常,但不一定要捕捉它。這個異常意味着我需要採取一些行動,比如記錄一條消息,然後顯示錯誤,使用CodeIgniter的show_error()函數。腳本應該退出而不繼續。

  2. 錯誤異常。如果用戶做了一些不允許的事情,例如在數字字段中輸入字母或訪問他沒有權限的頁面,則應拋出並捕獲該異常。

我想在整個項目中使用這兩種異常。數字2足夠清楚,但我如何去做例外1?如果不是每個try塊都有兩個catch塊,那將是非常好的,因爲第一個類型是全局的,並且應該始終是相同的:日誌消息,顯示錯誤,退出。最後,在codeigniter中,擴展Exception類的正確位置在哪裏?

謝謝。

+0

可能是這應該幫助http://thecancerus.com/simple-way-to-add-global-exception-handling-in-codeigniter/ –

回答

0

嚴重例外

The link posted by Sunil above爲全球處理嚴重例外是巨大的。你要非常小心拋出這些異常,並確保到最終用戶,該網站看起來不嚇人和破 - humoring the user is always a good idea

錯誤異常

我想你會過得更好治療像數字字段爲例外的文字錯誤,因爲他們不破壞的程序指令的正常。

如果用戶輸入的字母變成數字字段並提交表單,您的應用程序應該期待,用戶可以提供垃圾數據,你重複輸入過程,這是正常的流動。

這裏是我的代碼點火器處理方案2:

  1. 擴展CI_Log/application/libraries/MY_Log
  2. 添加MY_Log::$logs存儲在陣列的消息,如果日誌級別允許
  3. 模板鉤子獲取日誌MY_Log::get_logs()然後並將它們傳遞到其顯示爲日誌級別適當message boxes視圖

我還實現了一個名爲error_log的自定義日誌級別。這適用於我想發送到日誌文件而不顯示用戶的任何內容。

相關問題