2015-07-10 26 views
1

我正在使用Yii框架並在下面編寫代碼。當沒有特定ID的條目時,它給出Error: Call to a member function delete() on a non-object這是在調試模式下指示的yii\base\ErrorException。問題是,儘管列入了yii\base\ErrorException並指定了catch塊,但我無法捕獲此異常。這裏有什麼問題?Yii框架中我無法捕捉異常

  use yii\base\ErrorException; 

      try { 
       $model = BranchUser::findOne($_GET['id']); 
       $model->delete(); 
       return $this->redirect(['index']); 
      } catch (ErrorException $e) { 
       return $this->redirect(['site/error']); 
       // Error, rollback transaction 
       throw $e; 
       // print_r($model->getErrors()); 

      } 

回答

3

這是致命錯誤,無法從中恢復。

在嘗試使用它之前,您應該檢查$model是否與null不同。

if ($model === null) { 
    return $this->redirect(['site/error']); 
} 

Such errors are catchable in PHP 7.0,這樣很好。

+0

我喜歡你的答案,但如果問題是,「如果findOne找不到任何東西,怎麼會拋出異常?」 –

+0

@IvanButtinoni然後你拋出異常而不是返回。 :) – Alex

+0

是的,這是主意,但乍一看沒有任何事件/行爲可能導致「findOne」的行爲:( –