为什么这段代码中永远不会抛出 IOException

问题描述 投票:0回答:2

本例中从未抛出 IO 异常。

public static void main(String[] args){
    double r = 0;
    System.out.println("Please enter radius of a circle");
    try{
        Scanner sc = new Scanner(System.in);
         r = sc.nextDouble();
    }catch(NumberFormatException exe){
        System.out.println("Inpvalid radius value");
    }catch(IOException exe){
        System.out.println("IO Error :" + exe);
    }
    
    double per = 2 * Math.PI *r;
    System.out.println(per);
}

在下面的程序中,它没有显示任何错误。

public static void main(String[] args) {
     
     int radius = 0;
     System.out.println("Please enter radius of a circle");
    
     try
     {
             //get the radius from console
             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
             radius = Integer.parseInt(br.readLine());
     }
     //if invalid value was entered
     catch(NumberFormatException ne)
     {
             System.out.println("Invalid radius value" + ne);
             System.exit(0);
     }
     catch(IOException ioe)
     {
             System.out.println("IO Error :" + ioe);
             System.exit(0);
     }
     double perimeter = 2 * Math.PI * radius;
    
     System.out.println("Perimeter of a circle is " + perimeter);

我不明白为什么会这样。既然两者都在做同样的目的,为什么不能首先代码抛出 IOException?

java exception ioexception
2个回答
3
投票

既不是

Scanner sc = new Scanner(System.in);
也不是
r = sc.nextDouble();
抛出一个 IOException,你为什么要捕获它?

第二个片段是另一个故事:

这个对象:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

肯定会抛出 IOException


-2
投票
如果我们的输入出现错误,则会显示 IOException。例如,整数类型数据,我们输入一些字符串数据。这将显示错误消息。

您可以在这里学习更多内容

https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html

© www.soinside.com 2019 - 2024. All rights reserved.