三、聲明檢查時異常
public FileInputStream(String name)throws FileNotFoundException
這樣編譯器就會從其首部就可以知道這個方法將會拋出什么異常。
什么時候應該拋出異常?下面四種情況:
(1)調用一個拋出 已檢查的異常 的方法,如FileInputStream構造器(可控可處理)
(2)程序運行時發現的錯誤,并且利用throw拋出一個已檢查的異常(可控可處理)
(3)程序出現錯誤,例如a[-1]=0會拋出一個ArrayIndexOutOfBoundsException 這樣的未檢查異常(應該避免)(4)Java虛擬機和運行時庫出現內部錯誤(未檢查異常,屬于Error異常)(預料不到)如果出現前兩種情況時,必須告訴調用這個方法的程序員有可能拋出異常。
【編者感悟】為什么要這樣設計?如果檢查時異常對(3)情況負責,那么將會出現一堆不對程序負責的代碼,而靠異常檢測對程序的運行風險承擔責任,這顯然不是Java異常設計的初衷。不對(4)情況聲明是因為這種錯誤出現的概率低,第二出現后你也降低不了它帶來的損失,只能停止程序執行。
聲明多個已檢查的異常可以如下,記得逗號隔開:
class MyAnimation
{
public Image loadingImage(String s)throws FileNotFoundException, EOFException
}
四、拋出異常
String readData(Scanner in)throwsEOFException
{
...
while(...)
{
if(!in.hasNext())
{
if(n < len)
thrownew EOFException();
}
}
}
五、捕獲異常
public void read(String file)
{
try{
InputStream in = new FileInputStream(file);
int b;
while((b = in.read()) != -1)
[
//PROCESS INPUT
}
}catch(IOException exception){
exception.printStackTrace();
}
}
編輯整理:Claruarius,轉載請注明出處。
新聞熱點
疑難解答