@molekulyarniy

Try/catch и Promise catch по-разному отлавливают ошибки?

Переделал конструкцию try/catch с await в обыный Promise. И заметил такой момент: если try/catch считал статус 400 за ошибку, то Промис его за ошибку не считает. И мне стало интересно, действительно ли они по-разному отлавливают ошибки, или я что-то не так переделал. Хотелось бы побольше об этих отличиях почитать, если это так.
Вот что примерно происходит на стороне сервера
exports.createUser= async (req, res) => {
  try {
    const incomingData = req.body;

    let query = User.find();
    query = query.or([
      { number: incomingData.number},
      { username: incomingData.username},
    ]);
 
    const result = await query;

    if (result.some((e) => e.number === incomingData.number)) {
      return res.status(400).json('validation error');
    }
    ...
    ...

Вот как отлавливается 400 ошибка Промисом
UserService.addNew(newUser)
        .then((response) => {
          if (response.response && response.response.status === 400) {
            ...
            ...
          } else {
            ...
            ...
          }
        })
        .catch((error) => {
          console.log(error);
        });

С try/catch все абсолютно так же, но
if (response.response && response.response.status === 400) {
            ...
            ...
          }

работал в блоке catch
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы