2010-06-08 86 views
0

我目前正在研究需要大量外部庫的應用程序。我現在的工作是設置一個獨特的錯誤處理程序來管理每一個錯誤。覆蓋PEAR錯誤處理程序

到目前爲止,我發現了7種不同類型的PEAR錯誤:

  • PEAR_ERROR_RETURN:
  • PEAR_ERROR_EXCEPTION:
  • PEAR_ERROR_CALLBACK:
  • PEAR_ERROR_PRINT:
  • PEAR_ERROR_TRIGGER:
  • PEAR_ERROR_DIE:

我只想處理嚴重錯誤(如原生E * _ERROR)。唯一的問題是我完全不知道PEAR錯誤的批評!這些名稱與處理它們的方式有關,而不是它們的嚴肅性......是否有關於它的真實文檔?

我想一個更好的解決方案將包括使用他們的pushErrorHandling,但我只是不知道如何使用它...如果有人知道這裏,我會很感激......提前

謝謝!

回答

0

從你的問題,這聽起來像你想要一個功能來處理所有警告,錯誤和例外。

對於E_ERROR,我認爲你運氣不好。這表示PHP無法從中恢復的致命運行時錯誤,因此您的腳本註定要失敗。

例外情況下,您可以執行set_exception_handler("funcName");來處理程序執行中的所有未捕獲異常。但是,這應該是一個絕對最後的手段用於處理異常。如果您願意的話,您可以使用安全網,查看任何通過您嘗試/抓住的裂縫的事情。這樣做的原因(以及像這樣全局處理任何錯誤)的原因是你無法從異常中恢復,因爲set_exception_handler沒有返回值,並且它已退出程序堆棧。

在您的應用程序中大量使用try/catch。這可能看起來很乏味,或浪費時間,但事實是,你的程序在某些時候失敗。無論你是一個程序員,這是不可避免的。正確使用異常處理將允許您的應用程序正常關閉,甚至正常地從異常中恢復。

+0

嗨,謝謝你的回覆, 的確,我必須設法集中處理錯誤/異常......我很清楚異常是最合適的解決方案,但是我根本無法更改所有依賴於舊錯誤的外部代碼處理(如我的梨的版本)... – Rolf 2010-06-08 13:53:13