首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java圈套(四)

2013-04-12 
Java陷阱(四)问题:优柔寡断代码:static void copy(String src, Stringdest) throws IOException {InputStr

Java陷阱(四)

问题:优柔寡断

代码:

static void copy(String src, Stringdest) throws IOException {       InputStream in = null;       OutputStream out = null;       try{            in = new FileInputStream(src);            out = newFileOutputStream(dest);            byte[] buf = new byte[1024];            int n;            while ((n = in.read(buf)) > 0)                out.write(buf, 0, n);       } finally{            if (in != null) in.close();            if (out != null) out.close();       }}
分析:问题在finally语句块自身中。close方法也可能会抛出IOException异常。如果这正好发生在in.close被调用之时,那么这个异常就会阻止out.close被调用,从而使输出流仍保持在开放状态。对close的调用可能会导致finally语句块意外结束。

建议:对于任何在finally语句块中可能会抛出的被检查异常都要进行处理,而不是任其传播。

阅读链接:

Java陷阱(一)

Java陷阱(二)

Java陷阱(三)

Java陷阱(四)


1楼lianglevel昨天 22:52
感觉很有收获

热点排行