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