Java 異常處理5
發表時間:2024-01-15 來源:明輝站整理相關軟件相關文章人氣:
[摘要]下面的例子定義和實現了一個叫做ListOfNumbers的類。在類的構造器中,ListOfNumbers創建了一個Vector,它包含了從0到9的十個連續的整數。ListOfNumbers類也定義了一個叫writeList的方法,這個方法把這個數字列表寫入一個叫做OutFile.txt的文本文件中...
下面的例子定義和實現了一個叫做ListOfNumbers的類。在類的構造器中,ListOfNumbers創建了一個Vector,它包含了從0到9的十個連續的整數。ListOfNumbers類也定義了一個叫writeList的方法,這個方法把這個數字列表寫入一個叫做OutFile.txt的文本文件中。這個例子使用了在java.io中定義的輸出類,這個類在I/O:讀寫這一章中介紹。
// 注意: 這樣的設計,這個類不會被編譯
import java.io.*;
import java.util.Vector;
public class ListOfNumbers {
private Vector victor;
private static final int SIZE = 10;
public ListOfNumbers () {
victor = new Vector(SIZE);
for (int i = 0; i < SIZE; i++) {
victor.addElement(new Integer(i));
}
}
public void writeList() {
PrintWriter out = new PrintWriter(
new FileWriter("OutFile.txt"));
for (int i = 0; i < SIZE; i++) {
out.println("Value at: " + i + " = " +
victor.elementAt(i));
}
out.close();
}
}
這個例子中的第一行黑體字部分代碼調用了一個構造器,這個構造器初始化一個文件輸出流。如果這個文件不能被打開,這個構造器會拋出一個IOException異常。第二行黑體字部分代碼調用一個Vector類的elementAt方法,如果它的參數值太小(小于零)或太大(大于Vector中當前所包含的元素數),那么它會拋出一個ArrayIndexOutOfBoundsException異常。
如果試圖編譯ListOfNumbers類,編譯會打印一個有關被FileWrite構造器所拋出的異常的錯誤消息。這是因為構造所拋出的IOException異常是一個編譯檢查性異常,被elementAt方法拋出的ArrayIndexOutOfBoundsException異常是一個運行時異常,而Java編程語言只要求程序處理編譯檢查性異常,所以你只能獲取一個錯誤消息。
現在隨著對ListOfNumbers類的熟悉,并且知道異常是在程序中的什么地方拋出的,那么你就可以準備把異常處理器編寫到catch塊來處理那些異常。
怎樣拋出異常
在你能夠捕捉一個異常之前,在程序中的某個地方必須有拋出這個異常的代碼在在。任何代碼都可以拋出異常:它們可以你自己的代碼,也可以是來自于別人所寫的包中的代碼(例如與Java平臺一起提供的程序包),或者是Java運行時環境。不管拋出什么樣的異常,都要使用throw語句把異常拋出。
你可能已經注意到,Java平臺提供了各種的異常類。所有的這些類都是Throwable類的子類,并且它們都允許程序來區分在程序執行期間所發生的各種類型的異常。
你也可以創建自己的異常類來描述你編寫的類中所發生的問題。實際上,如果你是一個程序包的開發人員,你可能必須創建你自己的異常類的集合,以便于讓你的用戶來區分在你的程序包中發生的錯誤是來自己于Java平臺還是其它的包。
你也可以創建異常鏈,異常鏈在Java Standard Edition 1.4中被引入。更多的信息,請看“異常鏈”這一節。