У меня есть вспомогательная функция, которая обращается к API и извлекает страницу по идентификатору.Он использует async / await, и я пытаюсь обработать ошибки с помощью try catch.
Чтобы проверить обработку ошибок, я намеренно даю ему идентификатор, который не существует.
Вот метод:
const findPage = async (req, res, pageId) => {
let document
try {
let response = await getByID(pageId)
if (!response) throw Error('No Response')
return document
} catch (error) {
console.log(error) // I can see the error is being thrown.. I am purposefuly giving it an id that does not exist
return error
}
}
Это действительно выдает ошибку, как я и ожидал.Тем не менее, я вызываю функцию в другой части приложения, используя экспресс-маршрут.
Router.route('/page/:id').get(async (req, res) => {
let results
try {
results = await findPage(req, res, req.params.id) // This Function Returns an error
// Yet we still get results
res.json({results, msg: 'WHY?'})
} catch (error) {
res.send(error)
}
})
В том же файле маршрутизатора я попытался добавить некоторое конкретное промежуточное программное обеспечение для этого маршрутизатора, но так какне является ошибкой, она никогда не срабатывает.
Router.use((err, req, res, next) => {
if (err) {
console.log('holy error')
} else {
console.log('no error')
}
next(err)
})
Как экспресс-вызов API может возвращать результаты, а не ошибку, если вызываемая функция сама возвращает ошибку?