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(); } } } }
這時流創建時標准的寫法。