我有一些神经过时的日子试图在我的网站内建立一个好的错误处理系统。
我的错误处理系统只专注于意外错误,例如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();
是否有更好的处理错误的方法,此系统适用于意外错误。预期的错误会以不同的方式处理并显示给用户。
答案 0 :(得分:1)
是的,你对自己的怀疑是正确的 - 所有这三个步骤都是错误的。
所以,场景必须像这样
在你的bootstrap文件中创建一个像这样的代码
set_error_handler("myErrorHandler");
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
error_log("$errstr in $errfile:$errline");
header('HTTP/1.1 500 Internal Server Error', TRUE, 500);
readfile("500.html");
exit;
}
然后,像这样制作你的mysqli代码
$stmt = $mysqli->prepare("qwefq") or trigger_error($mysqli->error);
并记录所有错误