我是PHP开发的初学者,现在我正在学习一个教程,但我对本教程中的错误处理实现有点困惑。
我正在进行注册过程,这是一个向数据库注册新用户的功能
function registerUser($username,$password,$email,$fullname) {
$query = "INSERT INTO users SET username=?, password=?,email=?,fullname=?";
$statement = $this->conn->prepare($query);
if (!$statement) {
throw new Exception($statement->error);
}
$statement-> bind_param('ssss',$username,$password,$email,$fullname);
$returnValue = $statement -> execute();
return $returnValue;
}
此registerUser
函数的实现
// making connection
$file = parse_ini_file("../../../host.ini");
$dbhost = trim($file["host"]);
$dbusername = trim($file["username"]);
$dbpassword = trim($file["password"]);
$dbname = trim($file["dbname"]);
$access = new access($dbhost,$dbusername,$dbpassword,$dbname);
$access->connect();
// Inserting user to database
$result = $access->registerUser($username,$securedPassword,$email,$fullname);
if ($result) {
$user = $access->selectUser($username);
$resultArray = [
"status" => "200",
"message" => "Sucessfully registered",
"id" => $user["id"],
"username" => $user["username"],
"email" => $user["email"],
"avatar" => $user["avatar"],
"fullname" => $user["fullname"]
];
} else{
$resultArray = [
"status" => "400",
"message" => "can't insert data to database "
];
}
$access->disconnect();
echo json_encode($resultArray);
我不明白何时会使用throw new Exception($statement->error);
。因为错误发生时没有回音。为什么我必须在registerUser
函数
据我所知,如果我想抛出异常,它应该采用这种格式
try {
} catch {
}
我应该改为尝试捕捉格式吗?或者可以在if语句中使用throw异常吗?
提前致谢:)
答案 0 :(得分:2)
您对try和catch块是正确的,但是,它们仅在您想要捕获错误并专门处理它时使用(在大多数情况下,显示更多信息性错误消息)。如果不这样做(就像你在代码中呈现它的方式),脚本将由apache的顶级错误handeller终止。
所以简而言之,如果你想制作一个自定义错误handeller你需要一个try catch块,否则,只需要在需要时抛出错误。