2010-10-06 73 views
6

我試圖嘗試做一些有用的PDO異常,而不是顯示它們,但我無法找到我的生活如何使用錯誤處理程序(set_error_handler)或任何自定義來處理PDO異常。PHP:PDO的自定義錯誤處理程序?

我現在用的當然try .. catch塊捕獲異常,我實現在catch部分自定義錯誤處理程序,或者我可以完全跳過試戴> catch塊作爲例外處理程序將處理它對我來說(通過在聲明中調用or throw new exception (...)

我想我所要求的是一個捕獲PDO異常並且或多或少地記錄它們的示例(任何簡單的代碼都可以正確或不可以使用,我不會使用TOO dumb )

+1

嘿..當谷歌搜索'的set_error_han dler pdo'此出現的第一頁..奇怪它不是談論得很多。 – John 2010-10-06 17:37:40

回答

10

你將不得不在每個PDO查詢周圍使用try..catch塊在捕獲部分添加你的日誌函數沒有通用的處理程序爲excep PHP中的tions。

try { 
    pdo::error(); 
} 
catch (Exception $e) { 
    syslog($e); 
} 

如果您想要避免try..catch塊,您可以將PDO配置爲僅顯示錯誤而不是拋出異常。 http://php.net/manual/en/pdo.error-handling.php

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
+0

真棒,我可以使用錯誤處理程序然後(我發現了一個非常好的函數來記錄錯誤到磁盤)。 – John 2010-10-06 17:31:18

+1

您的默認set_error_handler()將會看到所有PDO警告,就像任何其他錯誤一樣。 – mario 2010-10-06 17:33:31

+0

很高興地接受,我決定把它留給PHP自己的錯誤處理(顯示錯誤關閉,log_errors以便於實現)。謝謝。 – John 2010-10-06 18:48:21

相關問題