生活随笔
收集整理的這篇文章主要介紹了
IO异常的处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在jdk1.7之前使用try catch finally 處理流中的異常
? ? 格式:
? ? ? ? try{
? ? ? ? ? ? 可能會產出異常的代碼
? ? ? ? }catch(異常類變量 變量名){
? ? ? ? ? ? 異常的處理邏輯
? ? ? ? }finally{
? ? ? ? ? ? 一定會指定的代碼
? ? ? ? ? ? 資源釋放
? ? ? ? }
package com.itheima.demo06.trycatch;import java.io.FileWriter;
import java.io.IOException;public class Demo01TryCatch {public static void main(String[] args) {//提高變量fw的作用域,讓finally可以使用//變量在定義的時候,可以沒有值,但是使用的時候必須有值//fw = new FileWriter("09_IOAndProperties\\g.txt",true); 執行失敗,fw沒有值,fw.close會報錯FileWriter fw = null;try{//可能會產出異常的代碼fw = new FileWriter("w:\\09_IOAndProperties\\g.txt",true);for (int i = 0; i <10 ; i++) {fw.write("HelloWorld"+i+"\r\n");}}catch(IOException e){//異常的處理邏輯System.out.println(e);}finally {//一定會指定的代碼//創建對象失敗了,fw的默認值就是null,null是不能調用方法的,會拋出NullPointerException,需要增加一個判斷,不是null在把資源釋放if(fw!=null){try {//fw.close方法聲明拋出了IOException異常對象,所以我們就的處理這個異常對象,要么 throws ,要么 try catchfw.close();} catch (IOException e) {e.printStackTrace();}}}}
}
創建對象失敗了,fw的默認值就是null,null是不能調用方法的,會拋出NullPointerException,需要增加一個判斷,不是null在把資源釋放?
fw.close方法聲明拋出了IOException異常對象,所以我們就的處理這個異常對象,要么 throws ,要么 try catch
JDK7的新特性
? ? 在try的后邊可以增加一個(),在括號中可以定義流對象
? ? 那么這個流對象的作用域就在try中有效
? ? try中的代碼執行完畢,會自動把流對象釋放,不用寫finally
? ? 格式:
? ? ? ? try(定義流對象;定義流對象....){
? ? ? ? ? ? 可能會產出異常的代碼
? ? ? ? }catch(異常類變量 變量名){
? ? ? ? ? ? 異常的處理邏輯
? ? ? ? }
package com.itheima.demo06.trycatch;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Demo02JDK7 {public static void main(String[] args) {try(//1.創建一個字節輸入流對象,構造方法中綁定要讀取的數據源FileInputStream fis = new FileInputStream("c:\\1.jpg");//2.創建一個字節輸出流對象,構造方法中綁定要寫入的目的地FileOutputStream fos = new FileOutputStream("d:\\1.jpg");){//可能會產出異常的代碼//一次讀取一個字節寫入一個字節的方式//3.使用字節輸入流對象中的方法read讀取文件int len = 0;while((len = fis.read())!=-1){//4.使用字節輸出流中的方法write,把讀取到的字節寫入到目的地的文件中fos.write(len);}}catch (IOException e){//異常的處理邏輯System.out.println(e);}}
}
JDK9新特性
? ? try的前邊可以定義流對象
? ? 在try后邊的()中可以直接引入流對象的名稱(變量名)
? ? 在try代碼執行完畢之后,流對象也可以釋放掉,不用寫finally
? ? 格式:
? ? ? ? A a = new A();
? ? ? ? B b = new B();
? ? ? ? try(a,b){
? ? ? ? ? ? 可能會產出異常的代碼
? ? ? ? }catch(異常類變量 變量名){
? ? ? ? ? ? 異常的處理邏輯
? ? ? ? }
package com.itheima.demo06.trycatch;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Demo03JDK9 {public static void main(String[] args) throws IOException {//1.創建一個字節輸入流對象,構造方法中綁定要讀取的數據源FileInputStream fis = new FileInputStream("c:\\1.jpg");//2.創建一個字節輸出流對象,構造方法中綁定要寫入的目的地FileOutputStream fos = new FileOutputStream("d:\\1.jpg");try(fis;fos){//一次讀取一個字節寫入一個字節的方式//3.使用字節輸入流對象中的方法read讀取文件int len = 0;while((len = fis.read())!=-1){//4.使用字節輸出流中的方法write,把讀取到的字節寫入到目的地的文件中fos.write(len);}}catch (IOException e){System.out.println(e);}}
}
?
總結
以上是生活随笔為你收集整理的IO异常的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。