Php PDO错误是否出现在Apache';谁的错误日志?
我正在学习PHP,有一个问题 如果我使用以下代码连接到数据库,Apache的错误日志中是否会出现可能的错误Php PDO错误是否出现在Apache';谁的错误日志?,php,error-handling,pdo,apache2,Php,Error Handling,Pdo,Apache2,我正在学习PHP,有一个问题 如果我使用以下代码连接到数据库,Apache的错误日志中是否会出现可能的错误 $con = new PDO('mysql:host='.$h.';dbname='.$dbn.';charset=utf8', $u, $p); $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); $con->setAttribute(PDO::ATTR_EMULATE_PREPARE
$con = new PDO('mysql:host='.$h.';dbname='.$dbn.';charset=utf8', $u, $p);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
$con->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
如果它们确实出现在那里,那么使用try-and-catch的原因是什么
谢谢。这是个很好的问题。
大多数PHP用户不理解异常,认为这些异常与错误报告有关,并完全滥用它们!虽然正确的答案相当简单: Apache的错误日志中是否会出现可能的错误
$con = new PDO('mysql:host='.$h.';dbname='.$dbn.';charset=utf8', $u, $p);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
$con->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
是的,如果您让PHP记录您的错误<代码>日志错误ini设置对此负责
如果它们确实出现在那里,那么使用try-and-catch的原因是什么
这是最有趣的问题。要处理错误消息,应永远不要使用try-catch
此机制用于处理错误。不是错误消息。这有本质上的区别,但被大多数PHP人员误解了 要处理错误消息,只需告诉PHP记录错误。
而如果要自行处理错误,则try-catch是必不可少的 什么是处理错误?
除了错误记录之外,在发生错误时必须执行的任何操作: 回滚事务
try {
$dbh->beginTransaction();
// some SQL stuff
} catch (Exception $e) {
$dbh->rollback();
throw $e;
}
请注意,在处理错误后,我们将重新引发一个异常
在不重要的非致命代码块中出错
try {
some_non_critical_function();
} catch (Exception $e) {
log_error($e->getMessage().$e->getTrace());
}
在这里,我们必须手动记录一条错误消息,同时让其余的代码运行
等等