问题描述
例如,通过BufferedReader
从终端读取行而不处理错误
BufferedReader input = new BufferedReader(new InputStreamReader(system.in));
try{
String input = input.readLine();
}
catch(Exception e){
// Do noting
}
不是将IOException处理为错误吗?如果是错误,是逻辑错误还是运行时错误?为什么?
解决方法
根据评论中的澄清,为:
- 语言错误
String input
会屏蔽对BufferedReader input
的访问-但这可能只是此发布中的错误
和
- 几个逻辑错误
错误是:(1)由于变量超出范围,不可能通过成功的输入执行任何操作;(2)缺乏对用户有关无效输入的反馈,以及(3)缺乏可见的重试或程序由于错误而中止,我猜应该会发生其中之一,并且可能(4)从描述中安静地吞噬所有Exception,而它可能只应处理IOException;以及(5)正如要求所要求的那样,没有实现拒绝整数的代码-数字也是字符。
和
- 运行时错误
readline
无法读取行是在运行时发生的事件,在任何给定执行中可能会或可能不会发生。
换句话说,逻辑错误是无法充分预期和处理可能的运行时错误。