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

为何JavaScript中try/catch无法捕获除以零的错误?

为什么1/0无法被catch捕获,但手动抛错可以?

这个问题其实是JavaScript语言本身的设计规则导致的,咱们一步步拆解来看:

两种场景的本质区别

  • 手动抛出new Error():这是你主动触发了一个显式异常,JavaScript会立即终止try块内后续代码的执行,并跳转到catch块处理这个异常对象,完全符合try/catch的设计逻辑。
  • 1 / 0运算:在ECMAScript标准中,这个操作并不会抛出错误!它会返回一个特殊的合法数值Infinity(正无穷),属于JavaScript数值类型的一部分。既然代码没有触发异常,try块会正常执行完毕,自然不会进入catch块。

你可以运行下面的代码验证这一点:

try { 
  let test = 1 / 0; 
  console.log(test); // 控制台会输出 Infinity
} catch (err) { 
  console.log('Caught Err...') 
}

补充:什么时候除以零会触发异常?

如果是使用BigInt类型进行除以零运算,就会抛出RangeError,这时候catch块就能正常捕获了:

try { 
  let test = 1n / 0n; 
} catch (err) { 
  console.log('Caught Err:', err); // 会捕获到 RangeError: Division by zero
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:23:22