明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Java 異常處理5

[摘要]下面的例子定義和實(shí)現(xiàn)了一個(gè)叫做ListOfNumbers的類。在類的構(gòu)造器中,ListOfNumbers創(chuàng)建了一個(gè)Vector,它包含了從0到9的十個(gè)連續(xù)的整數(shù)。ListOfNumbers類也定義了一個(gè)叫writeList的方法,這個(gè)方法把這個(gè)數(shù)字列表寫(xiě)入一個(gè)叫做OutFile.txt的文本文件中...
下面的例子定義和實(shí)現(xiàn)了一個(gè)叫做ListOfNumbers的類。在類的構(gòu)造器中,ListOfNumbers創(chuàng)建了一個(gè)Vector,它包含了從0到9的十個(gè)連續(xù)的整數(shù)。ListOfNumbers類也定義了一個(gè)叫writeList的方法,這個(gè)方法把這個(gè)數(shù)字列表寫(xiě)入一個(gè)叫做OutFile.txt的文本文件中。這個(gè)例子使用了在java.io中定義的輸出類,這個(gè)類在I/O:讀寫(xiě)這一章中介紹。

   // 注意: 這樣的設(shè)計(jì),這個(gè)類不會(huì)被編譯
   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();
   }
   }

   這個(gè)例子中的第一行黑體字部分代碼調(diào)用了一個(gè)構(gòu)造器,這個(gè)構(gòu)造器初始化一個(gè)文件輸出流。如果這個(gè)文件不能被打開(kāi),這個(gè)構(gòu)造器會(huì)拋出一個(gè)IOException異常。第二行黑體字部分代碼調(diào)用一個(gè)Vector類的elementAt方法,如果它的參數(shù)值太小(小于零)或太大(大于Vector中當(dāng)前所包含的元素?cái)?shù)),那么它會(huì)拋出一個(gè)ArrayIndexOutOfBoundsException異常。

   如果試圖編譯ListOfNumbers類,編譯會(huì)打印一個(gè)有關(guān)被FileWrite構(gòu)造器所拋出的異常的錯(cuò)誤消息。這是因?yàn)闃?gòu)造所拋出的IOException異常是一個(gè)編譯檢查性異常,被elementAt方法拋出的ArrayIndexOutOfBoundsException異常是一個(gè)運(yùn)行時(shí)異常,而Java編程語(yǔ)言只要求程序處理編譯檢查性異常,所以你只能獲取一個(gè)錯(cuò)誤消息。

   現(xiàn)在隨著對(duì)ListOfNumbers類的熟悉,并且知道異常是在程序中的什么地方拋出的,那么你就可以準(zhǔn)備把異常處理器編寫(xiě)到catch塊來(lái)處理那些異常。

   怎樣拋出異常
   在你能夠捕捉一個(gè)異常之前,在程序中的某個(gè)地方必須有拋出這個(gè)異常的代碼在在。任何代碼都可以拋出異常:它們可以你自己的代碼,也可以是來(lái)自于別人所寫(xiě)的包中的代碼(例如與Java平臺(tái)一起提供的程序包),或者是Java運(yùn)行時(shí)環(huán)境。不管拋出什么樣的異常,都要使用throw語(yǔ)句把異常拋出。

   你可能已經(jīng)注意到,Java平臺(tái)提供了各種的異常類。所有的這些類都是Throwable類的子類,并且它們都允許程序來(lái)區(qū)分在程序執(zhí)行期間所發(fā)生的各種類型的異常。

   你也可以創(chuàng)建自己的異常類來(lái)描述你編寫(xiě)的類中所發(fā)生的問(wèn)題。實(shí)際上,如果你是一個(gè)程序包的開(kāi)發(fā)人員,你可能必須創(chuàng)建你自己的異常類的集合,以便于讓你的用戶來(lái)區(qū)分在你的程序包中發(fā)生的錯(cuò)誤是來(lái)自己于Java平臺(tái)還是其它的包。

   你也可以創(chuàng)建異常鏈,異常鏈在Java Standard Edition 1.4中被引入。更多的信息,請(qǐng)看“異常鏈”這一節(jié)。

  



標(biāo)簽:Java 異常處理5