2010-10-06 79 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