黑马程序员技术交流社区
标题:
急!!!为什么catch后面不能加IOException??
[打印本页]
作者:
MGC
时间:
2014-8-5 17:41
标题:
急!!!为什么catch后面不能加IOException??
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Test6 {
public static void main(String[]args)
{
BufferedReader hm=new BufferedReader(new InputStreamReader(System.in));
int[] arr=new int[5];
int max=0;
for(int x=0;x<5;x++)
{
try
{
System.out.println("请输入第"+(x+1)+"个数字");
arr[x]=Integer.parseInt(hm.readLine());
}
catch(Exception e)
{
e.printStackTrace();
}
if(x==0)
{
max=arr[x];
min=arr[x];
}
else
{
if(arr[x]>max)
{
max=arr[x];
}
if(arr[x]<min)
{
min=arr[x];
}
}
}
System.out.println("输入的数据中最大值为"+max);
System.out.println("输入的数据中最小值为"+min);
}
}
如题,为什么catch后面不能加IOException??
作者:
唕
时间:
2014-8-5 18:03
本帖最后由 唕 于 2014-8-5 18:04 编辑
好像你前面加import java.io.*;就可以了 不知为什么
作者:
思维
时间:
2014-8-5 18:25
BufferedReader hm=new BufferedReader(new InputStreamReader(System.in));这里面不是也有IOException吗?
作者:
paozhuanyinyu
时间:
2014-8-5 18:36
没有导入包,或导入import java.io.IOException;或导入import java.io.*;
作者:
GoodBoy123
时间:
2014-8-5 19:16
你没导包的原因,
作者:
怀念黑海岸
时间:
2014-8-5 20:02
本帖最后由 怀念黑海岸 于 2014-8-5 20:08 编辑
楼上的都没说到点子上哦,
arr[x]=Integer.parseInt(hm.readLine());
这句代码是会抛出两个异常的哦,第一个产生于readLine()方法,这个异常就是IOException异常。然后你在对接受到的数据进行格式转换时:会产生一个运行时异常:NumberFormatException--数据类型转换异常,这个异常不是IO异常下的子异常,而是属于IllegalArgumentException中的子异常,他是归属RuntimeException下的,这个异常产生的条件是:当你往键盘输入一组非纯数字组成的字符串时,就会抛出这个异常。你总不能把a s >*¥这些东西给我转换成数字吧,即使按照字符表转换过来了也不是你想要的结果啊.
所以这儿不能用IOException捕获异常的原因就是他了,而Exception是IOException和RuntimeException的父类,所以你直接用父类去捕获异常这是允许的,但是对于问题处理去不适合。建议分别catch两个异常,分别处理. IOException异常处理过程随意,但是数据格式转换异常中的处理方式建议写成:
catch(NumberFormatException e){
continue; //因为键盘输入数据有误,所以重新跳回键盘输入地方再次等待键盘录入。直到键盘输入纯数字字符串为止。
}
作者:
师偃
时间:
2014-8-5 20:06
没导包把~import java.io*
eclipce快捷键在异常处shift+ctrl+o
作者:
MGC
时间:
2014-8-5 21:52
怀念黑海岸 发表于 2014-8-5 20:02
楼上的都没说到点子上哦,
arr[x]=Integer.parseInt(hm.readLine());
这句代码是会抛 ...
谢谢你的回答,我试过你的方法还是不行,但导入IOEception后就可以
作者:
王凯路路
时间:
2014-8-5 22:25
哥们, 倒包, 如果你嫌一个一个倒包麻烦, 直接来个 java.io.*;不就得了 ? 如果你这是想省资源...那你就来个java.io.IOException
作者:
zxtanshui
时间:
2014-8-5 22:28
导 包
作者:
interface_sfly
时间:
2014-8-5 22:29
楼上全说好了。。
作者:
黑马-胡明
时间:
2014-8-5 22:37
可能是try要执行的代码出现的并不是IOException异常。而,Exception是所有异常的父类,父类肯定就行得通了。
作者:
liujingnan
时间:
2014-8-5 23:24
没导包 在前面加上import java.io*
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2