为什么代码里需要try/catch

文章讨论了JavaScript中如何使用throw语句抛出自定义异常,并比较了在遇到错误时,不使用try/catch和使用try/catch以及Promise的catch()和then()方法对代码执行的影响。重点在于错误处理机制如何保证程序的正常逻辑执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

throw 语句用来抛出一个用户自定义的异常,在抛出错误时,throw 之后的语句将不会执行

  const getApi = (data) => {
    if (isNaN(data)) {
      throw new Error('Parameter is not a number!');
      console.log('bar') // 这句永远不会执行,throw之后的代码都不会
    }
  }

情况一:这样写,代码运行到报错后,页面直接显示空白报错

  useEffect(() => {
    getApi('xx'); 
    list();
  },[])
  
 const getApi = (data) => {
    if (isNaN(data)) {
      throw new Error('Parameter is not a number!');
      console.log('bar')
    }
  }
 
  const list = () => {
    console.log('list')
  }

在这里插入图片描述

情况二:加了try/catch,能够保证后面的代码能正常运行,如比这里的list函数

  useEffect(() => {
    
    try {
      getApi('xx')
    } catch (e) {
      console.error(e);
      // Expected output: Error: Parameter is not a number!
    }

    list()
    
  },[])
  
 const getApi = (data) => {
    if (isNaN(data)) {
      throw new Error('Parameter is not a number!');
      console.log('bar')
    }
  }
 
  const list = () => {
    console.log('list')
  }

promise的catch()和then的第二个回调函数,和try/catch,出发点都是捕捉错误之后将其隔离,同时不影响正常逻辑执行。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值