PHP:即使发现异常如何执行try block ?

标签 php mysql pdo

我有一个 try block ,其中肯定会抛出一些异常,但如果发生这种情况,我不想停止 try block 的执行。

这是代码:

try {
    $queryStr = "SELECT * FROM `$current_table` WHERE ...";
    $query = $db->prepare($queryStr);
    $query->execute();

    while($row = $query->fetch()) {

    }

} catch(PDOException $e) {
    //echo $e->getMessage();
}

这个 try/catch block 位于 for 循环内,因此 $current_table 将不断变化。现在,当前表可以采用 4 个值 april-june-2014july-september-2014october-december-2014 2015 年 1 月至 3 月。这些表名存储在一个数组中。

现在,当它将查询第一个表并且如果找到它时,那么它很好,但如果没有找到,那么我想检查其他表并看看它们是否存在。如果没有找到任何表,则会抛出异常,然后不会检查其他表。

有办法做到这一点吗?

最佳答案

使用 continue 语句:

for (/* condition */) {
  try {
    // things
  } catch (Exception $e) {
    continue;
  }

  // won't reach here if exception was caught
}

参见:http://php.net/continue

示例(在 WriteCodeOnline 上尝试一下):

$counter = 0;

for ($i = 0; $i < 5; $i++) {
  try {
    $counter++;
    if ($counter != 3) {
      throw new Exception("Test");
    }
  } catch (Exception $e) {
    continue;
  }

  echo "This only prints when an exception is not thrown (when \$counter is 3). See: \$counter = " . $counter;
}

echo "\n";
var_dump($counter);

关于PHP:即使发现异常如何执行try block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27499604/

相关文章:

php - 从服务器进程获取实时反馈 [在 PHP 中]

php - 如何在 Laravel 中对多个列使用相同的类别 id?

php - 加密的注册和登录密码出错

java - 字符串转换问题

php - 由于链接资源无效,MySQL 连接失败

PHP PDO MYSQL 连接

php - 需要帮助 php pdo 准备 sql

php - preg_match 转储空数组

php - 使用 php 从 mysql 数据库中选择随机唯一记录

php - 如何演示二阶 SQL 注入(inject)?