PHP中错误处理的正确方法

时间:2017-12-13 00:23:11

标签: php

我是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异常吗?

提前致谢:)

1 个答案:

答案 0 :(得分:2)

您对try和catch块是正确的,但是,它们仅在您想要捕获错误并专门处理它时使用(在大多数情况下,显示更多信息性错误消息)。如果不这样做(就像你在代码中呈现它的方式),脚本将由apache的顶级错误handeller终止。

所以简而言之,如果你想制作一个自定义错误handeller你需要一个try catch块,否则,只需要在需要时抛出错误。