1. 程式人生 > >Java---異常類、檔案類

Java---異常類、檔案類

一、異常類

在eclipse中寫Java程式碼的時候,我們會發現,在你的程式出現語法錯誤時,軟體會自動提示你某處程式碼有問題,如果想要執行程式就需要將其修改正確。在修改正確之後,編譯通過之後,我們也會常常遇到程式執行之後不是想要的結果,而系統提示的一些錯誤,

例如:

Exception in thread "main" java.lang.ArithmeticException: / by zero
at org.westos_guangjianzi.FileDemo.main(FileDemo.java:21)

這個就是java中的異常。

java中的異常分為編譯時期異常和執行時期異常。編譯時期異常就是指在編譯過程中出現的錯誤,,可以說只要不是執行時期的異常那都屬於編譯時期異常。而執行時期異常是指在編譯通過之後,程式執行出現問題,這個通常都是自己所寫的程式碼不夠嚴謹所造成的一些邏輯錯誤。

瞭解異常類之後,我們來講講java中如何處理這些異常,除了通過自己改程式,改邏輯上的錯誤,java提供了兩種方式來處理異常:

1)try,,,catch,,,finally:捕獲異常,例如進行兩個變數的運算,a=20,b=0,用a/b,這個語法上是可以錯誤的,但是這個程式的邏輯是錯誤的,因為分母是不能為零的,那麼如何處理這個狀況的發生呢,這裡就用方式來捕獲異常。

try{
//可能出現問題的程式碼
System.out.println(a/b);
}catch(ArithmeticException e){
System.out.println("除數不能玩為0");
}

其中ArithmeticException是個異常類,當虛擬機器丟擲的異常和catch中的異常類匹配,就執行裡面的語句,要處理可能出現錯誤的語句 。

2)throws丟擲異常的方式,將可能出現的異常在方法上丟擲

例如:在建立一個SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;之後,呼叫parse方法,這個方法在java中本身就有一個ParseException異常,所以需要在main方法上丟擲此異常public static void main(String[] args) throws ParseException{}。

這裡給出一個異常處理的完整程式碼幫助理解:

public class ExceptionDemo2 {

public static void main(String[] args) {
//定義兩個變數

int a = 10 ;
int b = 0 ;

int[] arr = {1,2,3} ;

try {
//try中:是可能會出現問題的程式碼
System.out.println(a/b);
//針對問題給出具體的異常類:
} catch (Exception e) {
//e.printStackTrace();
System.out.println("除數不能為0");
}

System.out.println("over");
}

其中的printStackTrace方法是常用的異常處理方法,當出現異常的時候,它會將那個包下以及具體那個程式碼出現了什麼問題都列印在控制檯。try中是可能出現錯誤的程式碼,catch中是捕獲程式碼後給出的處理。

二、檔案類(File)

File,是用來描述檔案或者目錄(資料夾)的路徑的抽象表現形式

檔案類就是對檔案的一系列操作,例如建立某個檔案,刪除某個檔案等等。

首先給出他的三個構造方法:

1)public File(String pathname)

例:File file = new File("E:\\demo\\a.txt") ;以字串的方式表示出當前檔案或者資料夾

2)public File(String parent,String child)

例:File file2 = new File("E:\\demo", "a.txt") ;通過parent和child共同表示出當前檔案和資料夾

3)public File(File parent, String child)

例:File file3 = new File("E:\\demo") ;
File file4 = new File(file3, "a.txt") ;也是通過給定的引數表示出當前檔案和資料夾,注意此構造方法中的第一個引數是file型別的,在使用前需要先建立一個file一個物件。

在通過以上三種方式構造file物件之後,就需要建立檔案了,那怎麼在碟符下建立檔案或者資料夾呢?

java提供了一些成員方法用於建立:

1)mkdir方法,用於建立資料夾,如果有則不再建立,返回false

2)creatNewFile方法,用於建立檔案,也是有就不在建立,如果在某個資料夾下面建立,那麼需要保證該資料夾真實存在,否則會出錯,這裡會丟擲一個異常IOException。

3)mkidirs方法,這個方法也是建立資料夾的,和mkidir方法不同的是,這個方法可以建立多級目錄,例如;aaa\\bbb\\ccc

對File進行操作,File中給出了一些常用的成員方法

delete:刪除檔案或者資料夾,這個方法不能直接刪除整個多級檔案,要刪除檔案需要一級一級的刪除,只能刪除空資料夾或者檔案

renameTo:重新命名方法,這個方法首先得有一個檔案,然後再進行重新命名,如果在別的碟符重新命名有剪下的效果

isDirectory:判斷是否是資料夾

isFile:判斷是否是檔案

這裡講一下File中的兩個高階方法,list和listFile方法,前者是將一個碟符下的檔案以及資料夾轉換為一個字串名稱陣列,後者是將一個碟符下的檔案和資料夾轉換為一個File陣列。這兩個方法可以用來找一些檔案或者資料夾,例如找以.JPG檔案等等。

這裡也給出一個File操作的具體例子幫組理解:

例:File file4 = new File("E:\\aaa\\bbb\\ccc\\ddd") ;
public boolean mkdirs()
System.out.println("mkdirs:"+file4.mkdirs());

這段程式執行之後,打印出來的是一個true,表示建立成功,然後去e盤下找,可以看見一個aaa\\bbb\\ccc\\ddd目錄。