【发布时间】:2013-08-25 23:57:02
【问题描述】:
为了在我的站点中建立一个良好的错误处理系统,我花了好几天的神经。
我的错误处理系统只关注意外错误,例如mysqli 错误
我的网站运行了许多 mysqli 查询,这意味着可能会发生错误。
我的系统有 3 个部分,每个部分我都不确定它在最佳实践和效率中的位置。
第 1 步:捕捉错误
$query = "
SELECT * FROM `users_account_activations` WHERE `user_ip` =?
";
$statement = $databaseHandler->mysqli->prepare($query);
$statement->bind_param('s', $userIp);
$statement->execute();
$statement->store_result();
//record error, if any
$databaseHandler->mysqli->error ? error = true : error = false;
这是在准备好的语句中捕捉错误的好方法吗?
在准备阶段是否会在查询结束时查找错误而不捕获错误?或者当准备阶段失败时,所有其他失败(比如倒下的多米诺骨牌)
第 2 步:记录错误
error_log("Could not process query...", 3, 'log/default.log');
- 这是记录错误的合适方式吗?与打开文件的系统有关吗?
第 3 步:处理数学运算
现在出现了一个错误,我需要决定如何继续前进,我的系统将退出脚本并进入标准错误页面,显示“opps!出了点问题”。
header('location: errorpage.php'); exit();
- 更改标题是一种好方法吗?我知道关于何时可以使用标题的限制。
有没有更好的处理错误的方法,这个系统是为意外错误设计的。预期的错误会得到处理并以不同的方式显示给用户。
【问题讨论】:
-
你真的需要像 $databaseHandlingHandlerUsedToHandleADatabase 这样的变量名吗?你不能只使用 $db 或 $mysqli 吗?
标签: php error-handling mysqli