如何解决ArrayIndexOutOfBoundsException异常和NullPointException异常

本文详细解析了Java中的两种常见异常:ArrayIndexOutOfBoundsException(数组索引越界异常)和NullPointerException(空指针异常)。通过实例展示了异常产生的原因,并提供了避免这些异常的有效策略。

ArrayIndexOutOfBoundsException异常
ArrayIndexOutOfBoundsException的意思是数组索引越界异常,是因为在提取数据时在使用索引不正常导致的。
例如:

int[]nums={1,2,3,4,5,6,7,8,9};
int num=nums[9];//引发ArrayIndexOutOfBoundsException异常

上述代码中 int num=nums[9] 语句将会引发ArrayIndexOutOfBoundsException异常,原因是nums数组的容量为9,其访问的索引范围为0~8,因此产生索引越界异常。
注意:在使用循环语句访问数组需要特别注意,因为如果边界值控制不好,将会很容易产生ArrayIndexOutOfBoundsException异常。

NullPointException异常
1.NullPointexEeption即空指针异常,但是指针只存在于c语言中,Java中是没有指针的,空指针就是空引用,java空指针异常就是引用本身为空,却调用了方法,这个时候就会出现空指针异常。
例如:

Person person = null;
person.setName("张三");
System.out.println(person.getName());

声明一个Person对象,打印出这个对象的name属性
这个时候你的person就出现空指针异常,因为你只是声明了这个Person类型的对象并没有创建对象,所以它的堆里面没有地址引用,切忌你要用对象掉用方法的时候一定要创建对象。
2.如何避免空指针异常
避免空指针异常的几个常用方法
1>字符串比较时常量放前面

if(status.equals(SUCCESS)){

}

这个时候 status 可能为 null 造成空指针异常,应该把常量放前面,就能避免空指针异常。

if(SUCCESS.equals(status)){

}

开发规范中基础的限制

2>初始化默认值
在对象初始化的时候给它一个默认值或者默认构造实现,如:

User user = new User();
String name = StringUtils.EMPTY;

3>返回空集合
在返回一个集合的话,默认会是 null,统一规范返回一个空集合。
现以list举例:

public List getUserList(){
    List list = userMapper.gerUserList();
    return list == null ? new ArrayList() : list;
}

这样接收方就不用担心空指针异常了,也不会影响业务。

4>Optional
Optional 是 JDK 8 新增的新特性,再也不用 != null 来判断了,这个在一个对象里面的多个子对象连续判断的时候非常有用。

5>断言
断言是用来检查程序的安全性的,在使用之前进行检查条件,如果不符合条件就报异常,符合就继续。
①Java 中自带的断言关键字:assert,如:
assert name == null : “名称不能为空”;
输出:
Exception in thread “main” java.lang.AssertionError: 名称不正确
不过默认是不启动断言检查的,需要要带上 JVM 参数:-enableassertions 才能生效。
②Java 中这个用的很少,建议使用 Spring 中的,更强大,更方便好用。
Spring中的用法:
Assert.notNull(name,“名称不能为空”);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值