我有一种方法可以将联系信息保存到数据库中。在方法中,如果成功保存则返回true,否则返回false。虽然我正在使用try catch块。我可以返回false而不是抛出异常吗?它是这样的,但我只是想知道这是一个好习惯,因为它是为大学任务。感谢
在我的 contact_functions.php 页面中:
function saveContactInfo($firstName, $lastName, $email, $subject, $message, $pdoConnection){
//Get timestamp of current time and store it into a variable
//This is so we can keep a record of the time a message was sent.
$messageTime = time();
try{
$query ="INSERT INTO contact_info (firstName, lastName, email, subject, message, messageTime) VALUES (:firstName, :lastName, :email, :subject, :message, :messageTime)";
$statement = $pdoConnection->prepare($query);
//bind our values. they will all be srting parameters.
$statement->bindValue(':firstName', $firstName, PDO::PARAM_STR);
$statement->bindValue(':lastName', $lastName, PDO::PARAM_STR);
$statement->bindValue(':email', $email, PDO::PARAM_STR);
$statement->bindValue(':subject', $subject, PDO::PARAM_STR);
$statement->bindValue(':message', $message, PDO::PARAM_STR);
$statement->bindValue(':messageTime', $messageTime, PDO::PARAM_STR);
$statement->execute();
return true;
}catch(PDOException $e){
//throw new pdoDbException($e);
//return "Error message " . $e->getMessage();
return false;
}
}
然后在我的 contact_handler.php 页面中:
if (saveContactInfo($firstName, $lastName, $email, $subject, $message, $pdoConnection)) {
echo 'Your Message has been sent!!';
} else {
echo 'There was a problem with your message!!';
}
答案 0 :(得分:3)
当函数/方法无法遵循其自然行为时,应抛出异常。
在您的情况下,该函数返回一个状态,指示插入是成功还是失败。因此,正如您所做的那样,处理与该函数内的数据库操作相关的任何异常都非常有意义。
另一方面,如果你正在获取数据,并且该函数应该返回该数据,那么在失败时抛出异常是正确的,而不是返回“不同的东西”。
无论如何,如果你抛出异常,你最终应该处理它。
答案 1 :(得分:1)
当您的代码无法继续进行时,应该抛出异常。返回true和false是对代码用户的反馈。如果你想在异常时返回false,那么它完全是你的选择而且完全可能