异常问题集锦

首先申明一个实体类User

1.自动解箱抛 NPE

编写一个简单的调用方法

结果就跑抛出了异常:

返回值为int类型,但是在获取ID实际值的时候,ID值是为NULL值所以会报空指针异常。

 

2.级联调用产生的异常

异常情况:

第27行报错,联级调用时,user.getUsername为空,故调用toString()方法报出NULL Pointer Exception

3.Map集合下的NPE问题

需要注意的是,Map集合中每种集合是不是都允许存储空键值对。

集合类keyvaluesuper说明
Hashtable不允许为Null不允许为NullDictionary线程安全
ConcurrentHashMap不允许为Null不允许为NullAbstractMap分段锁技术
TreeMap不允许为Null允许为NullAbstractMap线程不安全
HashMap不允许为Null不允许为NullAbstractMap线程不安全

 

直接上图片,图中分别向两种集合(HashMap以及ConcurrentHashMap)中添加数据:

第38行抛出异常

4.foreach 遍历集合删除元素

说明:在遍历集合时对元素进行 add/remove 操作要使用 Iterator,如果使用ForEach可能会产生异常情况

(1)使用ForEach遍历集合

出现异常,48行报错

(2)使用Iterator遍历集合

可见运行正常

5.Arrays.asList() 数组转换集合

说明:Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的 add/remove/clear 方法会抛      出 UnsupportedOperationException 异常。

直接上代码图片:

运行异常,出现UnsupportedOperationException 异常,因为asList() 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。异常图片:

6.toArray() 集合转换数组

说明:当我们需要把一个集合转换为数组时,往往会调用 toArray() 方法,如果直接进行类型强制转换,会发生类型转换异常。

直接上代码图片:

出现类型转换异常:ClassCastException,具体如下图:

7.subList 的使用

关于SubList的介绍:

1,该方法返回的是父list的一个视图,从fromIndex(包含),到toIndex(不包含)。fromIndex=toIndex 表示子list为空。

2,父子list做的非结构性修改(non-structural changes)都会影响到彼此:所谓的“非结构性修改”,是指不涉及到list的大小改变的修改。相反,结构性修改,指改变了list大小的修改。

3,对于结构性修改,子list的所有操作都会反映到父list上。但父list的修改将会导致返回的子list失效。

直接上代码图片:

第97行会发生异常,因为对父集合进行修改会导致,将会导致返回的子集合失效:

 

本文借鉴于:http://www.cnblogs.com/mafly/p/trap.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值