在 Yii2 中 Try/catch 不会捕获异常

HEL*_*PME 1 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'));
    }   
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试捕获方法中的异常permissions()。权限方法是:

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

    if (!$permitted) {
        throw new ForbiddenHttpException(Yii::t('app', 'MODULE_NO_PERMISSIONS'));
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Biz*_*ley 5

我几乎可以肯定,您Exception实际上是yii\db\Exception- 在use声明中检查这一点。如果是这样,很明显它不会捕获ForbiddenHttpException.

如果你想捕获所有异常写\Exceptioncatch或添加适当的use语句。