Задать вопрос
@ArtyomPLAY
Люблю Vue, React и все что с этим связано.

Try catch или then catch для rest api?

Есть обработчик запроса api, где db.query() это запрос к PostgreSQL, который возвращает Promise с resolve в случае удачи, и reject в случае ошибки(например, если неправильный пароль к бд).
Сам обработчик запроса:
async getAll(req, res) {
    const query = `SELECT * FROM users`
    return db
      .query(query)
      .then(({ rows, rowCount }) => res.status(200).send({ rows, rowCount }))
      .catch(error => res.status(400).send({ error }))
    // try {
    //   const { rows, rowCount } = await db.query(query)
    //   return res.status(200).send({ rows, rowCount })
    // } catch (error) {
    //   return res.status(400).send(error)
    // }
  }

Соответственно вопрос, как лучше обрабатывать промис, через try catch или then catch ? Прочитал на stackoverflow что try catch лучше использовать для синхронных действий, а then catch для асинхронных? Так ли это?
  • Вопрос задан
  • 1799 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 2
profesor08
@profesor08
Используй try/catch, про колбеки можешь забыть. Раньше только так можно было отловить какие-то исключения во время выполнения, теперь в них нужды нет.

Код чище, понятнее.
async getAll(req, res) {
    try {
       const { rows, rowCount } = await db.query(query)
       return res.status(200).send({ rows, rowCount })
    } catch (error) {
       return res.status(400).send(error)
    }
  }
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Прочитал на stackoverflow что try catch лучше использовать для синхронных действий, а then catch для асинхронных? Так ли это?
Да.
Т.к. try-catch блокирует дальнейшее исполнение кода (если он без async/await обёртки) и ждёт завершения текущей секции.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы