arithmeticexception在整数除零时由jvm抛出,因继承自runtimeexception无需强制声明;浮点数除零则返回infinity或nan,不抛异常。

在 Java 中,除数为零会导致 ArithmeticException(运行时异常),它继承自 RuntimeException,因此无需强制声明,但推荐用 try-catch 显式捕获并优雅处理。
为什么 ArithmeticException 会在除零时抛出
Java 对整数类型(int、long 等)的除法运算做了严格限制:当除数为 0 时,JVM 直接抛出 ArithmeticException。注意:该异常 不会 在浮点数(float、double)除零时抛出,而是返回 Infinity 或 NaN。
基本 try-catch 捕获结构
将可能触发除零的代码放在 try 块中,用 catch (ArithmeticException e) 捕获并处理:
示例:
int a = 10;
int b = 0;
try {
int result = a / b; // 此处抛出 ArithmeticException
System.out.println("结果:" + result);
} catch (ArithmeticException e) {
System.out.println("错误:不能除以零!");
System.out.println("异常信息:" + e.getMessage()); // 输出:/ by zero
}
增强处理:提前校验 + 异常捕获双保险
仅靠 catch 被动处理不够健壮。建议结合前置判断,提升可读性与可控性:
- 在执行除法前检查除数是否为 0,主动提示或设默认值
- 若仍保留 try-catch,可作为兜底,覆盖逻辑疏漏或动态计算导致的意外零值
- 避免在 catch 中静默吞掉异常(如空 catch 块),至少记录日志或给出明确反馈
常见误区提醒
- 不要试图 catch Exception 或 Throwable 来“一锅端”,应精准捕获 ArithmeticException,便于定位问题
- 不要在 catch 块中重新抛出未包装的同一异常(如 throw e;),除非有额外上下文需要补充
- 避免在 finally 中执行可能再次抛异常的操作(如又做一次除零),干扰主流程异常传播
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











