Java學習筆記-異常處理-有風險的行為
阿新 • • 發佈:2020-12-03
Java使用異常來告訴呼叫方法的程式程式碼:“有問題,我不行了!”
import javax.sound.midi.*;
public class MusicTest1 {
public void play(){
try {
Sequencer sequencer= MidiSystem.getSequencer();
//getSequencer()這個方法可能會在執行期間出問題,所以必須宣告出調用它可能會有風險。
} catch (MidiUnavailableException e) {
e.printStackTrace();
System.out.println( "Bummer");
}
System.out.println("我們有一個sequencer");
}//關閉播放
public static void main(String[] args){
MusicTest1 mt=new MusicTest1();
mt.play();
}
}//關閉類
編譯器要確定你瞭解所呼叫的方法是有風險的
異常是一種Exception型別的物件。
try {
//危險動作
} catch (Exception e) {//就跟方法的引數宣告一樣
//嘗試恢復
//這一段只會在有丟擲異常時執行
}
區域性的Exception繼承結構
如果你的程式程式碼會抓住異常,那是誰把他丟擲來的呢?
方法可以抓住其他方法所丟擲的異常。異常總是會丟給呼叫方。
會丟擲異常的方法要宣告它有可能會怎麼做。
public void takeRisk() throws Exception{//必須要宣告他會丟擲Exception
if (abandonAllHope){
throw new Exception();
//建立Exception物件並丟擲
}
}
public void crossFingers(){
try {
anObject.takeRisk();
}catch (Exception ex){
System.out.println("Aaargh!");
ex.printStackTrace();
//如果無法從異常中恢復,至少也要使用printStackTrace()來列出有用的資訊。
}
}
編譯器會和核對每件事,除了RuntimeException之外。編譯器保證:
- 如果你有丟擲異常,則你一定要使用throw來宣告這件事。
- 如果你呼叫會丟擲異常的方法,你必須得確認你知道異常得可能性。將呼叫包在try/catch塊中是一種滿足編譯器得方法。