首先,先介绍一下Java 异常的分类
首先,所有异常的父类都是Throwable,
往下分,分为Error和Exception,
Error为会使程序崩溃的严重错误,如栈溢出或内存不足
Exception为可以捕获的异常,又可分为编译时异常和运行时异常两种。
接下来,我们介绍一下以下五个常见的运行时异常
1)NullPointerException空指针异常
1.举例说明
运行后,抛出NullPointerException,如图
2.常见原因:
调用null对象的方法
访问或修改null对象的字段
获取null数组的长度
访问或修改null数组的槽位
抛出null作为Throwable值
预防措施:
在使用对象前进行null检查
使用Optional类来明确处理可能为null的情况
合理设计API,避免返回null
使用Objects.requireNonNull()进行参数验证
2)ArithmeticException数学运算异常
1.举例说明
运行后,抛出抛出ArithmeticException,如图
2.常见原因:
整数除以零
其他不合法的算术运算(如取模运算的除数为零)
预防措施:
在进行除法运算前检查除数是否为零
对于浮点数运算,除以零不会抛出异常(会得到Infinity或NaN)
使用BigDecimal进行精确计算
3)ArrayIndexOutOfBoundsException数组下标越界异常
1.举例说明
运行后,抛出ArrayIndexOutOfBoundsException,如图
2.常见原因:
使用负数索引访问数组
使用大于等于数组长度的索引
循环条件错误导致索引超出范围
预防措施:
始终检查数组索引是否在有效范围内
使用增强for循环(for-each)可以避免索引问题
在处理数组时仔细检查循环条件
考虑使用集合类(如ArrayList)代替原始数组
4)ClassCastException类型转换异常
1.举例说明
运行后,抛出ClassCastException,如图
2.常见原因:
错误的类型转换假设
在使用泛型集合时未进行类型检查
在多态情况下错误判断对象类型
预防措施:
在进行强制转换前使用instanceof进行检查
合理设计类层次结构,减少不必要的类型转换
使用泛型来提供编译时类型安全
5)NumberFormatException数字格式不正确异常[]
1.举例说明
运行后,抛出抛出NumberFormatException,如图
2.常见原因:
字符串包含非数字字符
字符串为空或null
数字格式与预期不符(如小数点、正负号位置错误)
预防措施:
在转换前验证字符串格式
使用正则表达式检查数字格式
使用try-catch块处理可能的异常
对于用户输入,提供明确的格式提示和验证
---------------------结束------------------
求点赞~!
求评论·~~~!
求收藏~~~~~!