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

TypeScript捕获AxiosError报ts1196错误,如何正确抛出axios异常?

错误原因

Catch clause variable type annotation must be 'any' or 'unknown' if specified.ts(1196)
上述报错的核心原因是 TypeScript 无法在编译阶段确认 try 块内抛出的错误类型,所以规定 catch 捕获的变量只能显式标注为 any 或 unknown 类型,你直接将 error 声明为 AxiosError 不符合语法规则。

正确处理axios错误的写法

要在保证类型安全的前提下处理 axios 错误,可以借助 axios 官方提供的 isAxiosError 类型守卫方法做类型收窄,示例如下:

import axios, { AxiosError } from "axios";

try {
  // 此处放置你的业务请求逻辑
} catch (error: unknown) {
  // 校验是否为axios抛出的请求错误
  if (axios.isAxiosError(error)) {
    // 这里的error会被TypeScript自动推导为AxiosError类型,可正常访问response、status等属性
    throw new Error(`请求失败:${error.message},状态码:${error.response?.status ?? '无'}`, {
      // 可通过cause属性挂载原始错误,方便上层进一步处理
      cause: error
    })
  }
  // 处理非axios抛出的其他异常
  throw new Error('业务执行异常', { cause: error })
}
不推荐的写法

如果你不需要严格的类型校验,也可以直接将catch变量标注为any绕开报错,但该写法会丢失类型安全保障,不建议在生产环境使用:

try {
  // 业务逻辑
} catch (error: any) {
  throw new Error(error.message)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:39:06