我正在尝试建立一个基本的Express应用程序,以使用axios获取一些API数据。我想以正确的方式做事,但是我对错误处理有些迷失。理想情况下,如果发生错误,我想将其传达给用户,如果API调用位于路由之内,我可以这样做。但是,如果它是一个单独的功能,您将如何做呢?
使用异步的axios调用功能:
const getForm = async () => {
try {
const config = {
method: 'get',
url: 'https://api.something.org/niceform'
}
}
const response = await axios(config)
return response
} catch (error) {
return error.message
}
}
快递路线:
app.get('/niceform', async (req, res) => {
try {
const data = await getForm()
res.send(data)
} catch (error) {
???
}
})
如果我理解正确,getForm()
函数将返回响应或错误,然后路由将发送返回的任何内容。但是,路线的catch块会做什么,我应该如何使用它?
此设置是否被认为是一种好习惯?任何建议将不胜感激,我仍在学习。
您可以throw
而不是return
错误消息。通过在getForm
catch块内使用throw,错误/异常将被下一个catch块捕获,该错误块位于app.get/niceform'
路由中。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw