finally是保证语句能一定执行的。不管程序是否会报错,我们把程序一定要执行的代码放在finally中。
比如说流的关闭,不管在读写的过程中是否报错,一定要关闭流,可以把流的关闭操作放在finally中。
代码展示如下所示:
package exception; import java.io.FileOutputStream; import java.io.IOException; /** * finally在IO中的使用 * @author 小明 * */ public class FinallyDemo2 { public static void main(String[] args) { //以下是标准的流创建写法 FileOutputStream fos = null; try { fos = new FileOutputStream("fos.dat"); fos.write(1); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { if(fos != null){ fos.close(); } //报错1:有作用域,所以要把fos的定义放在try外面,否则会报错 //报错2:close()方法要求处理一个异常 //注意:在new创建的过程中也有可能报错,比如说路径不对(父路径不存在) //这时会创建失败,那么fos仍然是空,那么这里应该多一层判断, //因为fos为空,关闭会抛出异常。 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
这时流创建时标准的写法。