Java Scanner NoSuchElementException
来源:互联网 发布:邻里家人网络平台 编辑:程序博客网 时间:2024/05/24 06:25
今天同学问我一个Java问题,代码结构如下:
当程序运行到第五行是会抛出java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:838)
at java.util.Scanner.next(Scanner.java:1347)
于是按照错误栈的轨迹查找原因。
简要的说,就是前后两次实例化的参数System.in是用一个对象,是InputStreamReader对象,每个该对象包含一个
StreamDecoder 实例 sd
private final StreamDecoder sd;
而scan.close()方法为
当执行到 ((Closeable)source).close();就会进入InputStreamReader的close()方法:
这里的sd就是上面提到的InputStreamReader对象,(有查了StreamDecoder 源代码,但没更深入下去),此时sd已关闭。
当执行如错误产生代码的第5行代码 scan.next()时,
异常是从方法throwFor();中抛出,而异常的来源是readInput()方法
当执行到12行source.read()时,source是Reader类
在执行InputStreamReader的read方法
而该InputStreamReader实际上就是System.in,而之前的close()方法已经将sd关闭了,此处再次实行read方法,则抛出IOException,然后层层捕获,最终抛出.NoSuchElementException
- Java Scanner NoSuchElementException
- java scanner 关闭出现Java.util.NoSuchElementException
- java Scanner出现 java.util.NoSuchElementException
- Scanner类Java.util.NoSuchElementException 异常。
- Scanner 类抛出java.util.NoSuchElementException
- Scanner 对象 与 NoSuchElementException
- (007) java后台开发之Scanner报错java.util.NoSuchElementException
- java.util.NoSuchElementException翻译
- java.util.NoSuchElementException原因
- java.util.NoSuchElementException
- java.util.NoSuchElementException
- java.util.NoSuchElementException
- java.util.NoSuchElementException
- java.util.NoSuchElementException
- java.util.NoSuchElementException
- java.util.NoSuchElementException异常
- java.util.NoSuchElementException
- java.util.NoSuchElementException
- Oracle中作为永久存储机制的嵌套表的数据追加
- 有一种关心,不只是感动 !
- 又过了一个星期
- printf 的打印格式
- u-boot :一个编译 hello_world.srec 的错误
- Java Scanner NoSuchElementException
- Ramdisk制作
- [原创](2010.02.07更新)忙里偷闲中写的一个系统物理/虚拟内存查看器。
- 通过GC输出分析内存泄露问题
- .net
- JavaScript
- Java Web开发学习笔记之一
- 【.NET版月经问题】之二【引用类型参数就是按引用传递吗?】
- 就从这里开始