The IO exception never is thrown in this example.

```
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);
}

```

Where as in this below program it is not showing any error.
 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);

```

I don't understand why it is happening. Since both are doing the same purpose Why can't first code throw IOException