Странное поведение на asyn c catch - PullRequest
0 голосов
/ 06 августа 2020

В последнее время я все время сталкиваюсь с проблемой, которую я не могу воспроизвести, или обернуть голову вокруг

try { 
  const result = await makeReq()
  console.log(result)
} catch (err) { 
  console.log(err)
}

Это основная c попытка уловки. Если makeReq выдает ошибку, то он будет пойман уловкой, поскольку я использую синтаксис asyn c await.

НО

в makeReq () есть некоторые ошибки, которые я не могу catch с помощью блока basi c try catch. Вместо этого мне нужно сделать что-то вроде этого.

try { 
  const result = await makeReq().catch(err => console.log('my interesting err: ', err)
  console.log(result)
} catch (err) { 
  console.log(err)
}

Я бы хотел, чтобы кто-нибудь объяснил и помог мне высмеять пример этого. Я считаю, что «.catch», прикрепленный к вызову async / await «makeReq», предназначен для ошибок asyn c, возникающих внутри вызова, но я попытался воспроизвести создание запроса, отклонив новое обещание вместо базового c, и оно по-прежнему улавливается основным «catch» в блоке «try / catch».

Необработанное отклонение обещания - это то, что я получаю, если не присоединяю .catch к вызову await.

`` makeReq`` - это просто заполнитель для некоторого SAP api, в котором я использую созданные побочные эффекты (т.е. сделаю req / запустите запрос - (cds.run - если кому-то интересно))

...