【问题标题】:Can I return false from a try and catch instead of throwing exception我可以从 try and catch 中返回 false 而不是抛出异常吗
【发布时间】:2016-08-09 04:25:46
【问题描述】:

我有一个将联系信息保存到数据库的方法。在该方法中,如果成功保存,我想返回 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!!'; 
    }

【问题讨论】:

  • 如果你问我,这是一个好的做法是一个品味问题,但这绝对是可能的。向用户提供比一般错误更具体的反馈始终是一个好习惯:“解决方案有问题”。
  • 具体反馈是给管理员和开发者的,除了一般描述外,用户应该对错误一无所知。所以你可以返回任何你想要的东西。

标签: php return try-catch


【解决方案1】:

当您的代码无法继续进行时,应该抛出异常。返回 true 和 false 是对代码用户的反馈。如果您想在遇到异常时返回 false,这完全是您的选择并且完全有可能

【讨论】:

    【解决方案2】:

    当函数/方法未能遵循其自然行为时,应抛出异常。

    在您的情况下,该函数返回一个状态,指示插入是成功还是失败。因此,正如您所做的那样,处理与该函数内的数据库操作相关的任何异常是非常有意义的。

    另一方面,如果您正在获取数据,并且该函数应该返回该数据,那么在失败时抛出异常而不是返回“不同的东西”是正确的。

    无论如何,如果你抛出一个异常,你最终应该处理它。

    【讨论】:

      猜你喜欢
      • 2011-03-25
      • 1970-01-01
      • 2010-11-09
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      相关资源
      最近更新 更多