黑马程序员技术交流社区

标题: 交通灯中的一些疑问 [打印本页]

作者: 张龙欢    时间: 2013-6-11 11:33
标题: 交通灯中的一些疑问
在张孝祥老师的交通灯控制系统视频中,在第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函数中直接调用这两行代码,就可以看到控制台会输出这个异常的信息
但是,如果在一个线程中使用这段代码的话,控制台就不会输出这个异常的信息

这样表述能看清楚吗……
作者: 袁梦希    时间: 2013-6-12 19:16
嘿嘿  你的问题没人能答呢
作者: 张龙欢    时间: 2013-6-12 19:50
袁梦希 发表于 2013-6-12 19:16
嘿嘿  你的问题没人能答呢

呵呵!!
作者: 桉树    时间: 2013-6-12 20:13
你不是有个
if (next != null) {
  nextLamp.light();
}

next == null 怎么会运行呢?
作者: 苑永志    时间: 2013-6-18 00:59
楼上正确,属于楼主看代码不仔细




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2