gpt4 book ai didi

rest - 在 Yii2 RESTful API 中覆盖 actionCreate 时如何捕获数据库异常?

转载 作者:行者123 更新时间:2023-12-01 05:54:42 24 4
gpt4 key购买 nike

我正在使用 Yii2 RESTful API 实现。
这是一个好的开始:http://budiirawan.com/setup-restful-api-yii2/

我正在用我自己的操作覆盖 CREATE 方法:

    public function actionCreate(){
$params = $_REQUEST;
if (!empty($params["name"]) && !empty($params["code"])) {
$model = new $this->modelClass;
foreach ($params as $key => $value) {
if (!$model->hasAttribute($key)) {
throw new \yii\web\HttpException(400, 'Invalid attribute:' . $key);
}
}

$model->attributes=$params;
try {
$model->save();
} catch (CDbException $ex) {
// ... NEVER REACH THIS POINT :-(
throw new \yii\web\HttpException(405, 'Error saving model');
} catch (Exception $ex) {
// ... NEVER REACH THIS POINT :-(
throw new \yii\web\HttpException(405, 'Error saving model');
}

} else {
throw new \yii\web\HttpException(400, 'No data input');
}

}

问题是当模型试图保存时,在我的情况下,我的数据库中存在“完整性约束违规”。

我想要的是处理该错误并运行我的“捕获”,但我不知道如何“捕获”该错误,因为 Yii 正在“控制”该错误并抛出 500 错误作为响应。

如何处理“模型保存”错误?

最佳答案

Yii2 没有 CDbException .要捕获所有与数据库相关的异常,您需要 catch(\yii\db\Exception $e){...}并捕获任何其他异常 catch(\Exception $e){...}
你正在捕捉两个异常,但它们做同样的事情,所以只是

catch(\Exception $e){ 
throw new \yii\web\HttpException(405, 'Error saving model');
}
\Exception是基本的 php 异常类,所有 yii2 异常都继承自该类

关于rest - 在 Yii2 RESTful API 中覆盖 actionCreate 时如何捕获数据库异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31069303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com