gpt4 book ai didi

php - PDO 错误是否出现在 Apache 的错误日志中?

转载 作者:行者123 更新时间:2023-12-03 07:40:55 25 4
gpt4 key购买 nike

我正在学习 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);

如果它们确实出现在那里,使用 try 和 catchs 的原因是什么?

谢谢。

最佳答案

这是一个很好的问题。
大多数 PHP 用户不了解异常,并认为这些与错误报告有关并完全滥用它们!虽然正确的答案相当简单:

will possible errors appear inside Apache's error log?



是的,如果你告诉 PHP 记录你的错误。 log_errors ini 设置对此负责。

If they do appear there, what's the reason to use try and catches?



这是最有趣的问题。
处理 错误信息 一个应该 永远不要使用 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());
}

在这里,我们必须手动记录错误消息,但让其余代码运行。

等等。

关于php - PDO 错误是否出现在 Apache 的错误日志中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17355253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com