为什么要在我已有BufferReader对象时用try catch包围它?

时间:2018-12-12 17:20:39

标签: java exception-handling bufferedreader

我正在编写一个程序,在该程序中,我使用BufferedReader对象从用户那里获取输入,然后在catch块中捕获BufferedReader对象抛出的IOException,但是仍然在finally块中关闭资源时,为什么用包围尝试/捕获或声明IOException

这是程序

public class BufferedReader3 {


    public static void main(String[] args){
        // TODO Auto-generated method stub

        InputStreamReader  r=null;
        BufferedReader br=null;
        String name="";    





        try 
        {

            r =new InputStreamReader(System.in);    
            br =new BufferedReader(r); 
            while(!name.equals("stop"))
            {    

                System.out.println("Enter data: ");   
                name=br.readLine();
            } 



            System.out.println("data is: "+name);    


        }              
        catch (IOException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        catch (Exception e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

        finally
        {

            br.close();    
            r.close();    
        }
    }

}

1 个答案:

答案 0 :(得分:0)

由于以下原因(source)json方法会抛出close

  

如果发生I / O错误

这就是为什么还需要捕获IOException方法可能抛出的IOException的原因,因为它位于close块中,而不位于您已经存在的finally块中:

try catch