【问题标题】:unable to use return in a try-block inside a class无法在类内的 try-block 中使用 return
【发布时间】:2012-09-04 21:51:12
【问题描述】:

我在执行以下方法时遇到问题:

private function query($statement, $params = array(), $name = ""){

    try{
        $this->prepare($statement, $name);
    }catch (Exception $e){
        echo 'Exception: ',  $e->getMessage(), "\n";
    }   
    try{
        return $this->execute($name, $params);
    }catch (Exception $e){
        echo 'Exception: ',  $e->getMessage(), "\n";
    }
}

第二个 try 块应该从另一个调用的方法返回值。我这样称呼它:

$resultset = $db->select('SELECT * FROM tabelle WHERE "ID" > $1', array(1));
var_dump($resultset);

并得到一个 NULL。
如果我 var_dump 尝试块内的值,我会得到一个结果:

private function query($statement, $params = array(), $name = ""){

    try{
        $this->prepare($statement, $name);
    }catch (Exception $e){
        echo 'Exception: ',  $e->getMessage(), "\n";
    }   
    try{
        var_dump($this->execute($name, $params));
    }catch (Exception $e){
        echo 'Exception: ',  $e->getMessage(), "\n";
    }
}

array(3) { ["ID"]=> string(1) "2" ["name"]=> string(13) "name1" [“时间”]=> 字符串(26)“2012-09-11 20:23:38.854918”} NULL

我做错了什么?

edit$db->select 和posted 方法之间的部分:

public function select($statement, $params = array(), $name){
  $this->setQueryType("select"); // just a setter
  return $this->query($statement, $params, $name);
}

【问题讨论】:

  • 并且在获取此 null 时不会引发异常?
  • 这就是全部代码吗?你说你使用 $db->select 正确调用?
  • 是的,没有抛出异常。 @LloydMoore 对不起,我忘记了一部分,我会编辑我的问题。
  • 我不明白为什么它会转储输出,好像$this->execute 确实返回了一些东西,但try 块不会返回该特定值

标签: php class return try-catch


【解决方案1】:

尝试将execute的返回值存储起来,在方法结束时返回,看看是否有效?

private function query($statement, $params = array(), $name = ""){
  $return = false;
  try{
    $this->prepare($statement, $name);
    $return = $this->execute($name, $params);
  }
  catch (Exception $e){
    echo 'Exception: ',  $e->getMessage(), "\n";
  }
  return $return;
}

【讨论】:

  • 不幸的是,这也不起作用。你能解释一下你最后一句话的意思吗?在其他方法中抛出可能的异常,例如执行()。
  • 是的,别管我的最后一句话。对我来说只有在没有注意到的情况下被抛出某个地方才有意义。
猜你喜欢
  • 1970-01-01
  • 2021-08-20
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 2021-05-31
  • 2020-02-04
  • 1970-01-01
相关资源
最近更新 更多