如何获得捕获错误404错误在Axios?



我有这段代码(函数的一部分),注意">BadURL";在URL的末尾:

import axios from ";

try {
return axios.post("http://localhost:5000/api/featureFlagBadURL", {
flagName: "newJqueryAjaxListener",
defaultValue: "false",
});
} catch (error) {
return { data: 'false' }
}

但是不能进入catch块,说:

(node:7676) UnhandledPromiseRejectionWarning: Error: Request failed with status code 404

只有当我将函数调用本身包装在类之外时才能捕获错误

Axios.post(...)是一个异步调用,它返回一个承诺,该语句不会失败,即使它失败,也不是因为HTTP请求失败。

您需要使用的是返回承诺的.then().catch()方法来处理请求。

return axios.post("http://localhost:5000/api/featureFlagBadURL", {
flagName: "newJqueryAjaxListener",
defaultValue: "false"
}).then((results) => {
console.log('yay', results);
}).catch((error) => {
console.log('oops', error);
});

另一种选择是使用asyncawait

async function handler() {
try {
const results = await axios.post("http://localhost:5000/api/featureFlagBadURL", {
flagName: "newJqueryAjaxListener",
defaultValue: "false",
});
console.log('yay', results);
}
catch (error) {
console.log('oops', error);
return { data: 'false' };
}
})

试试:

return axios.post("http://localhost:5000/api/featureFlagBadURL", {
flagName: "newJqueryAjaxListener",
defaultValue: "false",
}).then(function (response) {
// handle success
console.log(response);
}).catch(function (error) {
// handle error
console.log(error);
}).then(function () {
// always executed
});

来源

您可以捕获错误并检查状态码。那你就能处理好。也许是女巫开关案或者简单的如果。我这样做是为了404。请看下面的代码:

axios.post("http://localhost:5000/api/featureFlagBadURL", {
flagName: "newJqueryAjaxListener",
defaultValue: "false",
}).then((res) => {
// handle response => res.data
console.log(response);
}).catch((error) => {
if (error.response) {
if(error.response.status === 404) {
console.log('BAD URL')
// or 
console.log(error.response.statusText) // "Not Found" 
}
}
}

相关内容

  • 没有找到相关文章

最新更新