You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Axios请求出错无返回时,无需try/catch的状态判断方案

解决方案

首先修正你代码里的语法错误:await '$nuxt.axios.delete/account' 应该改为 await $nuxt.axios.delete('/account'),字符串包裹的写法是无效的。

要不用try/catch或.catch()就能判断请求状态,可以通过配置axios的validateStatus选项,让它不对任何状态码抛出异常,这样无论请求成功还是失败,都会返回完整的响应对象,你直接通过响应的status字段判断即可:

const response = await $nuxt.axios.delete('/account', {
  // 配置所有状态码都视为合法,不抛出错误
  validateStatus: () => true
});

// 根据状态码判断请求是否成功
if (response.status >= 200 && response.status < 300) {
  // 请求成功,将对象存入数组
  yourTargetArray.push(/* 你要存入的对象 */);
  console.log('请求成功', response);
} else {
  // 请求失败,执行错误逻辑
  console.log('请求出错', response);
}

原理说明

axios默认会将状态码不在2xx范围内的请求抛出异常,这就是你之前出错时else分支不会执行的原因。通过validateStatus自定义状态码校验规则,返回true会让axios把所有状态的响应都视为成功返回,不会触发异常,你就能直接拿到完整响应,通过status区分成功/失败场景,无需异常捕获逻辑。

如果需要全局生效(所有请求都用这个规则),可以在axios实例初始化时配置:

$nuxt.axios.defaults.validateStatus = () => true;

内容的提问来源于stack exchange,提问作者aworkinghuman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:09:55