A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张龙欢 中级黑马   /  2013-6-11 11:33  /  1340 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在张孝祥老师的交通灯控制系统视频中,在第10节的20分钟左右出现过这样一个问题,代码如下:[code=java]Lamp nextLamp = Lamp.valueOf(next);
if (next != null) {
  nextLamp.light();
}[/code]在这段代码中,我们可以看到
如果next传入的值是定义的几个枚举对象以外的值,例如传入"abc"
那么Lamp.valueOf(next)就无法找到相应的Lamp对象
那么Lamp.valueOf(next)返回给nextLamp的值也就是null
这样,在调用nextLamp.light();时,就会抛出NullPointerException异常
但是为什么NullPointerException这个异常信息没有在控制台被打印出来呢?有办法可以让它打印出来吗?

补充:也许这个问题看起来不太好理解……我还是举通用一点的例子吧
假设有这样一段代码:[code=java]List <String> list = new ArrayList ();
list.remove(0);[/code]由于list刚刚被初始化,所以里面没有内容,这样调用remove(0)的话就会抛出IndexOutOfBounds异常
如果在main函数中直接调用这两行代码,就可以看到控制台会输出这个异常的信息
但是,如果在一个线程中使用这段代码的话,控制台就不会输出这个异常的信息

这样表述能看清楚吗……

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

4 个回复

正序浏览
楼上正确,属于楼主看代码不仔细
回复 使用道具 举报
你不是有个
if (next != null) {
  nextLamp.light();
}

next == null 怎么会运行呢?
回复 使用道具 举报 1 0
袁梦希 发表于 2013-6-12 19:16
嘿嘿  你的问题没人能答呢

呵呵!!
回复 使用道具 举报
嘿嘿  你的问题没人能答呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马