React中如何区分Axios捕获的HTTP错误和其他运行时错误
Axios catch块区分HTTP相关错误与普通运行时错误方案
你可以直接使用Axios内置的isAxiosError()静态方法做判断,该方法返回true时代表当前错误是Axios请求链路产生的HTTP相关错误(包含网络异常、请求超时、接口返回非2xx状态码等所有和HTTP请求相关的错误场景),反之则是then块内业务代码抛出的普通运行时错误。
改造后的代码示例如下:
axios.get(getCertUrl) .then(async (response) => { // 此处的操作可能会抛出运行时错误 }) .catch(async (error) => { if (axios.isAxiosError(error)) { // 仅为HTTP相关错误的处理逻辑 // 补充:如果需要进一步区分是服务器返回错误还是请求未发出,可以加判断 if (error.response) { // 服务器返回了非2xx的状态码,可通过error.response.status拿状态码 } else { // 请求未成功发出,比如断网、请求超时 } } else { // 其他非HTTP相关错误,例如空引用错误、类型错误等then块内业务逻辑抛出的错误 } });
内容的提问来源于stack exchange,提问作者rahul Kushwaha
相关产品推荐
相关产品推荐

