如何解决ReactJS Hook错误处理无法捕获错误
我正在使用矩阵API,需要从其ID获取房间名称,这是有效的。其中一些没有名称,该名称返回我尝试捕获的404错误。不幸的是,这行不通,而且我不明白我要去哪里。代码本身可以执行,但仍会在控制台中抛出404。
const JoinedRooms = () => {
const [answer,setAnswer] = useState([]);
const [isError,setIsError] = useState(false);
const getAnswer = async () => {
const res = await fetch(`https://example.com/_matrix/client/r0/joined_rooms`,{
headers: {
"Authorization": `Bearer ${localStorage.getItem('mx_access_token')}`
}
});
const answer = await res.json();
const getNames = await Promise.all(answer.joined_rooms.map(async (roomId) => {
setIsError(false);
const res = await fetch(`https://example.com/_matrix/client/r0/rooms/${roomId}/state/m.room.name`,{
headers: {
"Authorization": `Bearer ${localStorage.getItem('mx_access_token')}`
}
});
try {
const roomName = await res.json();
return roomName.name;
} catch (error) {
setIsError(true);
}
}));
setAnswer(getNames);
}
useEffect(() => {
getAnswer();
},[]);
return answer;
}
export default JoinedRooms;
解决方法
404状态码不会throw
错误,因此您的try...catch
块将无法捕获它。尝试直接从返回的res
对象获取404。
const res = await fetch(`https://example.com/_matrix/client/r0/rooms/${roomId}/state/m.room.name`,{
headers: {
"Authorization": `Bearer ${localStorage.getItem('mx_access_token')}`
}
});
if (res.status === 404) {
// handle error
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。