You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReactJS中try catch语句编写报错如何修复

报错原因

代码中catch (e : TypeError)是TypeScript专属的类型注解语法,原生JavaScript不支持在catch子句的参数后直接写类型标注,运行时会直接触发语法错误。
除此之外,代码中直接访问window.device.version也存在逻辑风险:绝大多数桌面、移动端浏览器环境下window对象本身不存在device属性,直接读取嵌套属性会触发TypeError,即便修正语法也会进入错误捕获分支。

修复方法
  • 移除catch参数后的类型标注,若需要判断捕获的错误类型,在catch代码块内部通过instanceof做类型校验即可。
  • 访问嵌套对象属性时增加可选链操作符?.,避免上层属性不存在时直接抛出错误。

修复后的完整可运行代码如下:

const Login = () => {
    const navigate = useNavigate();

    const [Data, setData] = useState({
        email: "",
        password: ""
    });

    const { email, password } = Data;

    const onChangedata = (e) => {
        setData({ ...Data, [e.target.name]: e.target.value });
    }

    const submitdata = async (e) => {
        e.preventDefault();
        try {
            console.log(window.device?.version)
        } catch (e) {
            // 需要判断错误类型时在块内做校验
            if (e instanceof TypeError) {
                console.log('捕获到类型错误:', e.message)
            }
            console.log('Error')
        }
    }
}

如果你是在.tsx后缀的TypeScript文件中编写代码,catch子句的参数默认类型为unknown,同样不支持直接在参数位置标注TypeError,必须在块内部做类型收窄判断。

内容的提问来源于stack exchange,提问作者user19431501

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 12:39:24