Пишу некое API, есть такой код
try {
$data = json_decode($_POST['json']);
Yii::$app->db->createCommand("INSERT into " . $table . " (`" . implode('`,`', $data->fields) . "`) VALUES ('" . implode("','", $data->values) . "')")->execute();
return [
'error' => null,
'data' => Yii::$app->db->getLastInsertID(),
'result' => 1
];
} catch (ErrorException $e) {
echo 'Error: ', $e->getMessage(), "\n";
}
Но исключение не срабатывает. Если вставка вызывает ошибку - она просто вываливается. А мне надо, что бы я мог ее отловить и передать назад в ответе, что то типа такого
return [
'error' => $e->getMessage(),
'data' => null,
'result' => 0
];
Помогите понять, что тут не так
Вот Ваш код с разными вариантами вывода ошибки.
Первые два выведут ошибку в debug панели, "ошибка" и "предупреждение" соответственно. Третий вариант - страницу ошибки, ну и последний просто сообщение на белый экран.
try {
$data = json_decode($_POST['json']);
Yii::$app->db->createCommand("INSERT into users (`" . implode('`,`', $data->fields) . "`) VALUES ('" . implode("','", $data->values) . "')")->execute();
return [
'error' => null,
'data' => Yii::$app->db->getLastInsertID(),
'result' => 1
];
} catch (ErrorException $e) {
//Yii::error($e->getMessage());
//Yii::warning($e->getMessage());
//throw new \yii\web\HttpException(500, $e->getMessage());
return 'Error: ' . $e->getMessage() . "\n";
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости