面试题答案
一键面试1. 异常处理机制设计
- 网络错误:Axios 在网络连接失败时会抛出错误,如网络不可用、DNS 解析失败等。我们可以通过
catch
块捕获这类错误。 - HTTP 状态码错误:Axios 会对 HTTP 状态码进行检查,若状态码不在
2xx
范围内,也会抛出错误。我们可以在catch
块中检查错误对象的response
属性来处理这类错误。 - 请求超时:Axios 可以设置
timeout
参数来控制请求的超时时间,超时后同样会抛出错误,也在catch
块处理。
2. 在 Qwik 响应式系统中处理异常
在 Qwik 中,我们可以利用响应式状态来存储错误信息,并在组件中根据这些状态进行相应的 UI 提示,以保证用户体验不受影响。
3. 代码示例
import { component$, useSignal } from '@builder.io/qwik';
import axios from 'axios';
const MyComponent = component$(() => {
const error = useSignal<string | null>(null);
const fetchData = async () => {
try {
const response = await axios.get('your-api-url', {
timeout: 5000 // 设置请求超时时间为5秒
});
// 处理响应数据
console.log(response.data);
} catch (error: any) {
if (error.code === 'ECONNABORTED') {
error.value = '请求超时,请稍后重试';
} else if (error.response) {
error.value = `HTTP 错误: ${error.response.status}`;
} else {
error.value = '网络错误,请检查网络连接';
}
}
};
return (
<div>
<button onClick={fetchData}>获取数据</button>
{error.value && <p style={{ color:'red' }}>{error.value}</p>}
</div>
);
});
export default MyComponent;
在上述代码中:
- 我们定义了一个
error
信号量来存储错误信息。 fetchData
函数中进行 API 调用,并在try - catch
块中处理各种异常情况,并更新error
信号量。- 在组件返回的 JSX 中,根据
error
信号量的值来决定是否显示错误提示信息,从而优雅地在 Qwik 的响应式系统中处理异常。