Не могу правильно обработать ошибки Yii2

248
08 марта 2018, 11:42

Пишу некое 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
    ];

Помогите понять, что тут не так

Answer 1

Вот Ваш код с разными вариантами вывода ошибки.

Первые два выведут ошибку в 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";
}
READ ALSO
Как скрыть строки с текстом в исполняемых файлах PE (.exe)?

Как скрыть строки с текстом в исполняемых файлах PE (.exe)?

При созданииехе файла туда помещаются все строковые литералы, используемые в программе

259
Тип, возвращаемый функцией main

Тип, возвращаемый функцией main

Во многих примерах кода на сайте встречаются как записи вида void main(), так и int main() для главной функции программы

318
Утилита для неявных преобразования C++

Утилита для неявных преобразования C++

Может ли кто подсказать утилиту linux для выявления всех неявных преобразований в коде? Желательно с объяснением, как ее использовать?

245