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

Java中Runtime Exception和Runtime Error的区别是什么?

边界区分核心逻辑

你遇到的认知偏差本质是教材提到的「runtime error」为广义运行期问题定义,和Java语言层面的Exception不属于同一层级的概念,两者没有一一对应的绑定关系。


两个案例的具体说明

  • Math.sqrt(-9)返回NaN的原因
    Java的Math.sqrt方法严格遵循IEEE 754浮点数运算规范,针对负数开平方这类非法入参,设计上就不会抛出异常,而是返回特殊值NaN(Not a Number,非数)标识结果无效。教材将这类「入参不符合方法合法要求、运行后无法得到有效正常值」的情况归为广义runtime error,和是否抛出Exception没有关联。
  • 除以0触发异常的原因
    除以0的表现要分两种场景区分:
    • 整数除以0,例如5 / 0,Java会抛出ArithmeticException中断运行,符合教材说的runtime error特征
    • 浮点数除以0,例如5.0 / 0,同样遵循IEEE 754规范,会返回Infinity(无穷大)特殊值不会抛出异常,这类情况也属于广义的runtime error

两者的明确边界

教材中的*runtime error(运行时错误)*是对所有程序运行阶段出现的不符合预期的行为、结果的统称,不管底层实现是用返回异常值(NaN、Infinity、错误码等)还是抛出Exception的方式处理。
而你接触到的RuntimeException是Java语言层面提供的、用于通知运行期异常的一种实现机制,只是处理广义runtime error的其中一种手段,二者不是对等关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:48:04