2016-11-30 106 views
0

在此示例中从不抛出IO异常。为什么在此代码中永远不会抛出IOException

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

在下面的程序中,它没有显示任何错误。 公共静态无效的主要(字串[] 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

无论Scanner sc = new Scanner(System.in);也不r = sc.nextDouble(); 被抛出IOException异常,你为什么要没收?

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

这个对象:

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

可以肯定地抛出IOException异常

相关问题