当前位置: 首页 > article >正文

java.lang.ArithmeticException

ArithmeticException算术异常类在java.lang包下,继承RuntimeException运行期异常,算术异常类在Java1.0就有,当发生异常算术条件时抛出算术异常类,譬如除数为0的情况,除数除不尽的情况。

一 异常出现场景

1.1 除数为零

// 除数为0, 进行取值运算
@Test
public void test1() {int a = 1;int b = 0;int result = a / b; //java.lang.ArithmeticException: / by zeroSystem.out.println("result is: " + result);System.out.println("aaa");
}
// 除数为0, 进行取模运算
@Test
public void test2() {int a = 1;int b = 0;int result = a % b; //java.lang.ArithmeticException: / by zeroSystem.out.println("result is: " + result);System.out.println("aaa");
}

1.2 除数除不尽

// 除数除不尽
@Test
public void test3() {BigDecimal bigDecimalOne = BigDecimal.valueOf(1);BigDecimal bigDecimalTwo = BigDecimal.valueOf(3);// java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.// 非终止十进制扩展;没有可精确表示的十进制结果。BigDecimal result = bigDecimalOne.divide(bigDecimalTwo);System.out.println("result is: " + result);System.out.println("aaa");
}

tips:整型和浮点型不存在除数除不尽的情况,但是浮点数除法运算有精度损失问题, 同时还要考虑整型和浮点型数据溢出问题

二 异常处理

2.1 处理除数为零

// 除数为0, 进行取值运算
@Test
public void test1001() {int a = 1;int b = 0;// 除法运算需要对除数进行非零校验if (b != 0) {int result = a / b;System.out.println("result is: " + result);}System.out.println("aaa");
}
// 除数为0, 进行取模运算
@Test
public void test1002() {int a = 1;int b = 0;// 除法运算需要对除数进行非零校验if (b != 0) {int result = a % b;System.out.println("result is: " + result);}System.out.println("aaa");
}

2.2 处理除数除不尽

// 除数除不尽
@Test
public void test1003() {BigDecimal bigDecimalOne = BigDecimal.valueOf(1);BigDecimal bigDecimalTwo = BigDecimal.valueOf(3);// 除法运算需要对除数进行非零校验if (bigDecimalTwo.compareTo(BigDecimal.ZERO) != 0) {// 在除法运算中, 指定结果的精度和舍入模式BigDecimal result = bigDecimalOne.divide(bigDecimalTwo, 2, RoundingMode.HALF_UP);System.out.println("result is: " + result);}System.out.println("aaa");
}

http://www.lryc.cn/news/2378708.html

相关文章:

  • openEuler24.03 LTS下安装MySQL8.0.42
  • gflags 安装及使用
  • Linux面试题集合(2)
  • 致敬经典 << KR C >> 之打印输入单词水平直方图和以每行一个单词打印输入 (练习1-12和练习1-13)
  • std::ratio<1,1000> 是什么意思?
  • 基于Llama3的开发应用(二):大语言模型的工业部署
  • 2025.05.17淘天机考笔试真题第三题
  • windows 10 做服务器 其他电脑无法访问,怎么回事?
  • Linux进程信号处理(26)
  • 【从设置到上传的全过程】本地多个hexo博客,怎么设置ssh才不会互相影响
  • 顶层架构 - 消息集群推送方案
  • Python训练打卡Day26
  • 构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践
  • 报表控件stimulsoft教程:如何在报表和仪表板中创建热图
  • (8)python开发经验
  • 0x08.Redis 支持事务吗?如何实现?
  • win32相关(字符编码)
  • 使用Langfuse和RAGAS,搭建高可靠RAG应用
  • VSCode + Cline AI辅助编程完全指南
  • android studio导入项目
  • Autosar Nvm下电存储实现方式-基于ETAS工具
  • c# 数据结构 树篇 入门树与二叉树的一切
  • Python Bug 修复案例分析:asyncio 事件循环异常引发的程序崩溃 两种修复方法
  • 题单:递归求和
  • 融智学视域下的系统性认知增强框架——基于文理工三类AI助理赋能HI四阶跃迁路径
  • 怎么在excel单元格1-5行中在原来内容前面加上固定一个字?
  • 使用 Vue Tour 封装一个统一的页面引导组件
  • OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——mqtt库
  • 数据结构 -- 顺序查找和折半查找
  • 信息收集+初步漏洞打点