我在处理一个函数中UnhandledPromiseRejectionWarning时遇到了问题,该函数调用其他函数发出axios请求。
const getCode = async () => {
const code = await baseURL.get('/gcs/login/k?codigoCanal=4')
return code
}
const posLogin = async (code) => {
const poslogin = await baseURL.get(`/resource/autenticar/${code}`)
return poslogin
}
const login = async () => {
try {
const code = await getCode();
const finishedLogin = async posLogin(code)
} catch (error) {
handleLoginError(error)
}
}
const handleLoginError = (error) => {
if (error.response.status === 400) {
throw new Error(`[${inst}] Bad Request; ${error.response.statusText}`)
}
if (error.response.status === 401) {
throw new Error(`[${inst}] Wrong credentials; ${error.response.statusText}`)
}
throw new Error('Unknown Error')
}
login()
执行此代码将返回UnhandledPromiseRejectionWarning,但我意识到,如果将try catch放在登录函数的catch中n,则此警告将消失
} catch (error) {
try {
handleLoginError(error)
} catch (err) {
console.log('Ooppss', err)
}
执行此操作时,代码在嵌套catch中输入,“err”值是handleLoginError(错误)的值
在catch中不执行try catch,如何才能实现同样的操作?
您似乎需要调用login
,如下所示:
try {
await login();
}
catch(err) {
// handle here the error
}