个人理解:
查阅JAVA api可知:方法一:
InputStreamReader:
- public InputStreamReader(InputStream in,
- String charsetName)
- throws UnsupportedEncodingException
复制代码 BufferedReader:
- public String readLine()
- throws IOException
复制代码
也就是说,在方式一中会抛出IOException,它是checkedException。因此,你要么try..catch将其捕获,要么声明异常将其抛出。
方法二:
Scanner:
- public Scanner(InputStream source)
复制代码- public int nextInt()
- 抛出:
- InputMismatchException - 如果下一个标记与 Integer 正则表达式不匹配,或者超出范围
- NoSuchElementException - 如果输入信息已耗尽
- IllegalStateException - 如果此扫描器已关闭
复制代码
你选择的构造方法没有抛异常。至于nextInt方法,虽然抛出了异常,但查阅可知它们都是RuntimeException的子类,这类异常是运行时异常(uncheckedException),编译时不会检查。因此,方法二编译时不会报错。
|