在Java里ArithmeticException一般在什么场景出现_Java算术异常说明
发布时间 - 2026-01-29 00:00:00 点击率:次ArithmeticException最典型场景是整数类型(int、long、short、byte)除以零或模零,立即抛出“/ by zero”;浮点数除零返回Infinity或NaN不抛异常;BigInteger和BigDecimal除零也抛该异常,消息更具体。
除零操作触发 ArithmeticException
Java 中最典型的 ArithmeticException 场景是整数类型的除零,比如 int、long、short、byte 作被除数时除以 0。注意:这和浮点数不同——double 或 float 除零不会抛异常,而是返回

Infinity 或 NaN。
-
10 / 0→ 立即抛出ArithmeticException: / by zero -
0 / 0→ 同样抛出/ by zero(不是NaN) -
10L / 0L、(short)5 / (short)0同样触发 -
Integer.MIN_VALUE / -1在某些 JVM 实现中也可能触发(溢出导致的未定义行为,但 OpenJDK 通常不抛此异常;不过明确写死该表达式时需警惕)
BigInteger 和 BigDecimal 的除零行为差异
这两个类的除法方法对零除的处理更严格,且异常类型仍是 ArithmeticException,但消息更具体:
-
BigInteger.divide(BigInteger.ZERO)→ArithmeticException: division by zero -
BigDecimal.divide(BigDecimal.ZERO)→ 同样抛division by zero(注意:若用带RoundingMode的重载,如divide(divisor, scale, RoundingMode),除零仍会抛异常,不因指定舍入模式而绕过) - 但
BigDecimal.divide(...)若分母非零但结果无限不循环(如1/3未指定精度),会抛ArithmeticException: Non-terminating decimal expansion—— 这也属于同一异常类,常被忽略
容易误判的“非算术”场景
有些看似数学的操作其实不会触发 ArithmeticException,反而可能抛其他异常或静默失败:
-
int x = Integer.parseInt("abc")→ 抛NumberFormatException,不是ArithmeticException -
Math.sqrt(-1.0)→ 返回NaN,不抛异常 -
new int[-1]→ 抛NegativeArraySizeException,继承自RuntimeException,但和算术无关 -
10 % 0(取模零)→ 和除零一样,抛/ by zero;但10.0 % 0.0返回NaN
public class Demo {
public static void main(String[] args) {
try {
System.out.println(5 / 0); // 触发
} catch (ArithmeticException e) {
System.out.println(e.getMessage()); // 输出 "/ by zero"
}
try {
System.out.println(new BigInteger("10").divide(BigInteger.ZERO));
} catch (ArithmeticException e) {
System.out.println(e.getMessage()); // 输出 "division by zero"
}
}
}
真正要留心的是:**整数除零必炸,浮点除零不炸,而 BigDecimal 除零和无限小数都归在同一异常下**。很多线上 ArithmeticException 其实来自没设精度的 BigDecimal.divide,而不是眼见的“除以零”。
# java
# ai
# jvm
# Integer
# Float
# math
# int
# double
# 循环
# 继承
# 整数类型
# 抛出
# 的是
# 最典型
# 浮点数
# 浮点
# 这也
# 这两个
# 仍是
# 线上
# 中也
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速打造个性化非模板自助建站?
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
java中使用zxing批量生成二维码立牌
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
如何快速登录WAP自助建站平台?
如何快速重置建站主机并恢复默认配置?
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
想要更高端的建设网站,这些原则一定要坚持!
如何快速选择适合个人网站的云服务器配置?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
黑客入侵网站服务器的常见手法有哪些?
免费网站制作appp,免费制作app哪个平台好?
Laravel如何实现多对多模型关联?(Eloquent教程)
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
如何在不使用负向后查找的情况下匹配特定条件前的换行符
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
Android自定义listview布局实现上拉加载下拉刷新功能
如何在建站之星绑定自定义域名?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何自定义建站之星模板颜色并下载新样式?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
香港网站服务器数量如何影响SEO优化效果?
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
如何用PHP工具快速搭建高效网站?
如何有效防御Web建站篡改攻击?
黑客如何通过漏洞一步步攻陷网站服务器?
如何安全更换建站之星模板并保留数据?
Laravel如何实现用户注册和登录?(Auth脚手架指南)
北京网站制作的公司有哪些,北京白云观官方网站?
Laravel如何实现API版本控制_Laravel版本化API设计方案
5种Android数据存储方式汇总
中山网站推广排名,中山信息港登录入口?
Linux网络带宽限制_tc配置实践解析【教程】
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
香港服务器如何优化才能显著提升网站加载速度?
详解jQuery停止动画——stop()方法的使用
Thinkphp 中 distinct 的用法解析
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
如何彻底删除建站之星生成的Banner?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?

