为什么在此代码中永远不会抛出IOException

时间:2016-11-30 05:40:32

标签: java exception-handling ioexception

在此示例中永远不会抛出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

2 个答案:

答案 0 :(得分:2)

Scanner sc = new Scanner(System.in);r = sc.nextDouble();都不是 抛出 IOException ,你为什么要抓住它?

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

这个对象:

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

可以肯定抛出 IOException

答案 1 :(得分:0)

如果输入中有一些错误,则显示IOException。 ex,整数类型数据,我们输入一些String数据。这将显示错误消息。

你可以在这里学习更多https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html