【问题标题】:Yii2 Catching Exceptions in Console ModeYii2 在控制台模式下捕获异常
【发布时间】:2019-04-09 02:50:51
【问题描述】:

我正在尝试在我的控制台应用程序中添加一些错误捕获块。

具体例如我有一个 SQL 代码块,

$query = "SELECT * FROM
          visits_column_maps";
$mapsAry = Yii::$app->db->createCommand($query)->queryAll();

如果某事向南抛出异常并且脚本结束。

我想抓住它并按我的条件结束它。

我尝试了一个 try/catch 块;

try {
    $query = "SELECT * FROM
              visits_column_maps";
    $mapsAry = Yii::$app->db->createCommand($query)->queryAll();
} catch(Exception @e) {
    // graceful exit here
    echo "Exception caught";
    exit();
}

但是当通过更改表名进行测试时,我仍然会在捕获它之前终止脚本。

我想我可能需要在某个地方调整配置,但不确定在哪里。

感谢您提供的任何帮助。 斯科蒂

【问题讨论】:

  • 你需要使用\Exception而不是Exception
  • @Sr1871 您应该将其发布为答案。

标签: php error-handling exception-handling yii2


【解决方案1】:

您需要使用\Exception 而不是Exception

try {
    $query = "SELECT * FROM
              visits_column_maps";
    $mapsAry = Yii::$app->db->createCommand($query)->queryAll();
} catch(\Exception $e) {
    // graceful exit here
    echo "Exception caught";
    exit();
}

【讨论】:

  • \Exception @e 是怎么回事?你不觉得应该是\Exception $e吗?这将是一个语法错误
  • 你是对的,在 try\catch 中避免错误是没有意义的
  • 非常感谢 Sr1871 的时间和回答。是的,@e 是帖子中的错字,但阿斯拉姆的眼光很好。
猜你喜欢
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多