例如,通过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(当从描述中它可能应该只处理IOException时,可能会悄悄地吃掉所有Exception,以及(5(没有实现用于拒绝整数的代码,正如要求所说的那样——数字也是字符。
和
- 运行时错误
readline
读取行失败是在运行时发生的事件,在任何给定的执行中都可能发生,也可能不发生。
换句话说,逻辑错误是未能充分预测和处理可能的运行时错误。