返回信息流最近在补异常处理的部分,看了Java核心技术的对应部分和网上的一些资料,主要的try-catch-finally写法有2种,一个是Java核心技术(第八版-卷一)P480上推荐的
File f = null;
FileInputStream fis = null;
try {
try {
f = new File("f");
// 这个文件是不存在的,所以应该抛出FileNotFoundException
fis = new FileInputStream(f);
fis.read();
} finally {
if (fis != null) fis.close();
}
} catch (FileNotFoundException e) {
// XXXXXXX
} catch (IOException e) {
/// XXXXX
}
}
就是将try-catch和try-finally分开,可以提高清晰度,但是这样的问题是fis.close()可能抛出异常,然后finally中抛出的异常会覆盖try-caych中的异常。
还有一种是自己现在比较常用的
File f = null;
FileInputStream fis = null;
try {
f = new File("f");
// 这个文件是不存在的,所以应该抛出FileNotFoundException
fis = new FileInputStream(f);
fis.read();
} catch (FileNotFoundException e) {
// XXXX
} catch (IOException e) {
// XXXX
} finally {
try {
if(fis!=null) fis.close();
} catch (Exception e) {
// XXXX
}
}
请问这两种异常处理方法哪种比较好?还是说要根据具体的情况?求大神指教
这是一条镜像帖。来源:北邮人论坛 / java / #42888同步于 2015/7/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
异常处理的问题
Lamperouge
2015/7/19镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
可以试试commons-io包里的这个方法: IOUtils.closeQuietly(),看名字就知道它会帮你处理掉所有I/O中close的问题,不用try catch了
【 在 Lamperouge ([意航团]|取个名字也麻烦|美航的京东狗) 的大作中提到: 】
: 最近在补异常处理的部分,看了Java核心技术的对应部分和网上的一些资料,主要的try-catch-finally写法有2种,一个是Java核心技术(第八版-卷一)P480上推荐的
: [code=java]
: File f = null;
: ...................
多谢多谢~~
【 在 dss886 的大作中提到: 】
: 可以试试commons-io包里的这个方法: IOUtils.closeQuietly(),看名字就知道它会帮你处理掉所有I/O中close的问题,不用try catch了
Java1.7用户请用try-with-resource
try(InputStream is = new FileInputStream("blahblah")) {
...
is.read();
...
} // 自动关
好的,我去学学
【 在 nuanyangyang 的大作中提到: 】
: Java1.7用户请用try-with-resource
: [code=java]
: try(InputStream is = new FileInputStream("blahblah")) {
: ...................