主题
错误处理
在前端请求中,错误处理是必不可少的。Ky 提供统一的错误处理机制,支持捕获网络错误、HTTP 状态码错误和自定义处理逻辑。
捕获错误
使用 try...catch 捕获请求异常:
javascript
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:请求被取消时抛出
javascript
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 在响应后统一处理错误:
javascript
const api = ky.create({
hooks: {
afterResponse: [
(request, options, response) => {
if (!response.ok) {
console.error(`请求 ${request.url} 返回状态码 ${response.status}`);
}
}
]
}
});小结
- 使用
try...catch捕获请求异常。 - Ky 提供不同类型的错误对象,便于分类处理。
- 可通过实例的
hooks实现统一错误处理逻辑。