用于例如
(async() => {
let apiRes = null;
try {
apiRes = await axios.get('https://silex.edgeprop.my/api/v1/a');
} catch (err) {
console.error(err);
} finally {
console.log(apiRes);
}
})();
在finally
中,apiRes
将返回null。
即使当API得到404响应时,响应中仍然有我想要使用的有用信息。
当axios抛出错误时,如何使用finally
中的错误响应。
https://jsfiddle.net/jacobgoh101/fdvnsg6u/1/
4条答案
按热度按时间c9x0cxw01#
根据文档,完整的响应作为错误的
response
属性提供。所以我会在
catch
块中使用该信息:Updated Fiddle
但是如果你想把它放在
finally
中,只需要把它保存到一个变量中就可以了:6tr1vspr2#
根据AXIOS文档(此处:https://github.com/axios/axios)你可以在config对象中传递
validateStatus: false
给任何axios请求。例如
你也可以像这样传递一个函数:
validateStatus: (status) => status === 200
根据文档,默认行为是如果(200 <= status < 300)则返回true的函数。p5fdfcr13#
您可以处理状态码:
使用Ts进行重复:
frebpwbc4#
关于可接受的解
{ validateStatus: false }
:同样重要的是要注意,您仍然会在axios.get(...)行上看到相同的错误消息
然而,代码在“.then(...)”部分继续。这是一个奇怪的行为,花费了我很多测试时间,因为我认为设置没有影响。