Я использую структуру Yii и написал код ниже. Когда нет записи для определенного идентификатора, она дает Error: Call to a member function delete() on a non-object
который является yii\base\ErrorException
указанным в режиме отладки. Проблема в том, что я не могу уловить это исключение, несмотря на включение yii\base\ErrorException
и указать его catch block. В чем проблема?
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());
}
Это фатальная ошибка, и из нее невозможно восстановить.
Вы должны проверить, что $model
является чем-то иным, чем null
прежде чем пытаться его использовать.
if ($model === null) {
return $this->redirect(['site/error']);
}
Такие ошибки увлекательны в PHP 7.0, так что хорошо.