忘记处理异常是逻辑/运行时错误还是不是错误

问题描述

例如,通过BufferedReader从终端读取行而不处理错误

    BufferedReader input = new BufferedReader(new InputStreamReader(system.in));
    try{            
        String input = input.readLine();
    }
    catch(Exception e){
    // Do noting
    }

不是将IOException处理为错误吗?如果是错误,是逻辑错误还是运行时错误?为什么?

解决方法

根据评论中的澄清,为:

  1. 语言错误

String input会屏蔽对BufferedReader input的访问-但这可能只是此发布中的错误

  1. 几个逻辑错误

错误是:(1)由于变量超出范围,不可能通过成功的输入执行任何操作;(2)缺乏对用户有关无效输入的反馈,以及(3)缺乏可见的重试程序由于错误而中止,我猜应该会发生其中之一,并且可能(4)从​​描述中安静地吞噬所有Exception,而它可能只应处理IOException;以及(5)正如要求所要求的那样,没有实现拒绝整数的代码-数字也是字符。

  1. 运行时错误

readline无法读取行是在运行时发生的事件,在任何给定执行中可能会或可能不会发生。


换句话说,逻辑错误是无法充分预期和处理可能的运行时错误。