gpt4 book ai didi

javascript - 从 catch block 中获取 “Uncaught (in promise) Error”

转载 作者:行者123 更新时间:2023-11-30 20:25:18 25 4
gpt4 key购买 nike

我遇到了一个奇怪的错误,我已经纠结了将近一天。看来我拒绝的 promise 没有被我的 catch block 捕获。我对 es6 asyncawait 有点陌生;但是,它看起来与我在 C# 中使用的非常相似。

Get: async function (request, cancelToken = null) {
console.info('Sending GET', request)
store.commit('global/setLoader', true)
let headers = getAuthTokenHeader()
try {
var res = await Vue.axios({
url: baseUrl + request.Url,
params: request.Params,
method: 'GET',
headers
}).catch(function (error) {
console.error('Failed to GET: ' + error)
if (typeof error.response !== 'undefined' && typeof error.response.data !== 'undefined' && error.response.data !== null) {
throw new Error(error.response.data)
} else {
throw error
}
})
console.info('Request received', res)
return res
} finally {
store.commit('global/setLoader', false)
}
},

错误在 if (typeof error.response !== 'undefined' && typeof error.response.data !== 'undefined' && error.response.data !== null) {

根据 https://javascript.info/async-await#error-handling
我不应该收到这个“Ucaught (in promise)”错误,因为我将整个异步调用包装在 await 中。

调用代码也在等待这个代码。这里是调用引用。

static async GetPackagingDimensions (input, Id) {
const request = {
Url: 'api/packing/getPackagingBoxDimensionsByBarCode',
Params: {
boxBarcode: input,
orderId: Id
}
}
const res = await HttpUtil.Get(request)
return res

}

有趣的是,如果我将调用代码本身包装在 try catch 中,错误就会被适本地捕获。

为什么我无法从我的 catch 中捕获被拒绝的 promise?

快速编辑- 我的 console.log 也没有在 catch 中调用,但错误似乎是在以下行中抛出的

enter image description here

最佳答案

try catch 不像 then catch 那样工作。

try {
var res = await Vue.axios({
url: baseUrl + request.Url,
params: request.Params,
method: 'GET',
headers
})
}
catch(error) {
console.error('Failed to GET: ' + error)
if (typeof error.response !== 'undefined' && typeof error.response.data !== 'undefined' && error.response.data !== null) {
throw new Error(error.response.data)
} else {
throw error
}
}

在js中try catch block 是这样使用的。等待解决 promise

如果在解析 promise 时捕获到错误,则将错误抛出到 catch block

关于javascript - 从 catch block 中获取 “Uncaught (in promise) Error”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50988771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com