在张孝祥老师的交通灯控制系统视频中,在第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函数中直接调用这两行代码,就可以看到控制台会输出这个异常的信息
但是,如果在一个线程中使用这段代码的话,控制台就不会输出这个异常的信息
这样表述能看清楚吗…… |