Yii2 在控制台模式下捕获异常

Sco*_*son 1 php error-handling exception yii2

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

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

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

如果出现问题,则会引发异常并结束脚本。

我想抓住这个并按照我的意愿结束它。

我尝试了 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();
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Sr1*_*871 5

你需要使用\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();
}
Run Code Online (Sandbox Code Playgroud)

  • `\Exception @e` 是怎么回事?你不认为它应该是“\Exception $e”吗?这将是一个语法错误 (2认同)