黑马程序员技术交流社区
标题:
关于IO流是否需要try catch的问题
[打印本页]
作者:
y506798278
时间:
2016-7-16 11:16
标题:
关于IO流是否需要try catch的问题
这里面有两个main方法,实现的功能是一模一样的,不过一个有try catch,一个没有,我想问 这个try catch有没有必要,面试的时候需要写不
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("e:\\a.txt");
fos = new FileOutputStream("e:\\b.txt");
byte[] buf = new byte[fis.available()]; //创建了一个关联文件大小一样的缓冲区
fis.read(buf);
Arrays.sort(buf);
fos.write(buf);
fos.flush();
} catch (IOException e) {
System.out.println(e.toString());
} finally {
try {
fis.close();
} catch (IOException e) {
System.out.println(e.toString());
}
try {
fos.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("e:\\a.txt");
FileOutputStream fos = new FileOutputStream("e:\\b.txt");
byte[] buf = new byte[fis.available()];
fis.read(buf);
Arrays.sort(buf);
fos.write(buf);
fis.close();
fos.close();
}
复制代码
这里面有两段
作者:
896575538
时间:
2016-7-16 11:42
这个东西,听老师讲第一种只有面试的时候会用到,第二种才是开发用的
作者:
empty3717
时间:
2016-7-16 12:13
第二种清晰明了。
作者:
cat73
时间:
2016-7-16 12:16
本帖最后由 cat73 于 2016-7-16 12:28 编辑
我推荐这种写法(Java7 以上可用):
try(InputStream fis = new FileInputStream("e:\\a.txt")) {
try(OutputStream fos = new FileOutputStream("e:\\b.txt")) {
byte[] buf = new byte[fis.available()];
fis.read(buf);
Arrays.sort(buf);
fos.write(buf);
}
} catch(IOException e) {
e.printStackTrace();
// 善后处理 如给用户提示出现了错误
}
复制代码
如果函数需要抛出异常,则可不写 catch。
try(InputStream fis = new FileInputStream("e:\\a.txt")) {
try(OutputStream fos = new FileOutputStream("e:\\b.txt")) {
byte[] buf = new byte[fis.available()];
fis.read(buf);
Arrays.sort(buf);
fos.write(buf);
}
}
复制代码
作者:
阿卜
时间:
2016-7-16 12:29
我记得以前再其他地方听过……
如果你需要在这里立即处理异常,就使用try/catch,
如果你不想在这里处理,而是丢给其他类处理,就使用throws。
作者:
阿卜
时间:
2016-7-16 12:37
阿卜 发表于 2016-7-16 12:29
我记得以前再其他地方听过……
如果你需要在这里立即处理异常,就使用try/catch,
呃……不知道怎么在楼内回- -
不是太懂你想表达的意思- -,帖子不是说是否需要try/catch块么
并且两段代码都有close()并抛出异常啊……
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2