错误处理

在前端请求中,错误处理是必不可少的。Ky 提供统一的错误处理机制,支持捕获网络错误、HTTP 状态码错误和自定义处理逻辑。

捕获错误

使用 try...catch 捕获请求异常:

import ky from 'ky';

async function fetchData() {
  try {
    const data = await ky.get('https://api.example.com/data').json();
    console.log(data);
  } catch (error) {
    console.error('请求出错:', error);
  }
}

fetchData();

`

Ky 错误对象

  • HTTPError:当 HTTP 响应状态码非 2xx 时抛出
  • TimeoutError:请求超时时抛出
  • AbortError:请求被取消时抛出
try {
  await ky.get('https://api.example.com/data', { timeout: 1000 }).json();
} catch (error) {
  if (error.name === 'HTTPError') {
    console.error('HTTP 错误:', error.response.status);
  } else if (error.name === 'TimeoutError') {
    console.error('请求超时');
  } else if (error.name === 'AbortError') {
    console.error('请求被取消');
  } else {
    console.error('未知错误:', error);
  }
}

自定义错误处理

可以通过 hooks 在响应后统一处理错误:

const api = ky.create({
  hooks: {
    afterResponse: [
      (request, options, response) => {
        if (!response.ok) {
          console.error(`请求 ${request.url} 返回状态码 ${response.status}`);
        }
      }
    ]
  }
});

小结

  • 使用 try...catch 捕获请求异常。
  • Ky 提供不同类型的错误对象,便于分类处理。
  • 可通过实例的 hooks 实现统一错误处理逻辑。