Try / catch在Yii2中没有捕获异常

时间:2017-11-06 09:06:17

标签: php yii2

正如标题所说,try/catch并没有捕获抛出异常。

这是我的代码:

public function edit($id)
{
    try {
        $this->permissions($id);   
        return $this->redirect(['edit/list']);

    } catch (Exception $e) {
        Yii::$app->session->setFlash('error', Yii::t('app', 'PERMISSIONS_NOT_FOUND'));
    }   
}

我试图抓住permissions()方法中的异常。权限方法是:

private function persimssions($id)
{
    $permitted = false;

    if (!$permitted) {
        throw new ForbiddenHttpException(Yii::t('app', 'MODULE_NO_PERMISSIONS'));
    }
}

有人可以解释我有什么问题吗?谢谢你的帮助

1 个答案:

答案 0 :(得分:4)

我几乎确定您的Exception实际上是yii\db\Exception - 请在use语句中进行检查。如果是这样,很明显它不会捕获ForbiddenHttpException

如果要捕获所有异常,请在\Exception中写下catch或添加正确的use语句。