《數據結構與抽象:Java語言描述(原書第4版)》一I2.2.2 現在處理:try-catch塊
本節書摘來華章計算機《數據結構與抽象:Java語言描述(原書第4版)》一書中的第2章 ,[美]弗蘭克M.卡拉諾(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 羅得島大學 新英格蘭理工學院 辛運幃 饒一梅 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。
I2.2.2 現在處理:try-catch塊
要處理異常,必須先標出可能引起異常的Java語句。還必須決定要尋找哪個異常。方法的文檔及throws子句會告訴我們可能發生哪個受檢異常。這就是我們要處理的異常。
處理異常的代碼含有兩段。第一段,try塊(try block),含有可能拋出異常的語句。第二段含有一個或多個catch塊。每個catch塊(catch block)含有處理或捕獲(catch)某種類型異常的代碼。所以,因為調用方法readString而處理IOException的代碼可能有如下的形式:
try塊中的語句的運行,與沒有這個塊時是一樣的。如果沒發生異常,則try塊全部執行,然後執行catch塊後的語句。但如果在try塊內發生了IOException,則執行立即轉到catch塊。現在已經捕獲了異常。
catch塊的語法類似於一個方法定義。標識符e稱為catch塊參數(catch block parameer),它表示catch塊將處理的IOException的對象。雖然catch塊不是方法定義,但在try塊內拋出一個異常,類似於調用一個catch塊,其中參數e表示一個實際的異常。
作為一個對象,每個異常都有存取方法getMessage,它返回拋出異常時創建的描述字符串。通過顯示這個字符串,可以告訴程序員所發生異常的性質。
catch塊執行完後,執行它後麵的語句。但如果問題是嚴重的,最好的反應是中斷程序嗎?catch塊可以調用exit方法來終止程序,如下所示:
賦給System.exit的參數0,表示程序的正常結束。雖然我們遇到了一個嚴重問題,但我們有意中斷程序,這在操作係統看來是正確的。
注:如果沒有處理受檢異常,或在throws子句中聲明它,編譯程序會抱怨。有些異常可以在方法的定義中處理,而有些可以在它的throws子句中聲明。一般地,不處理或聲明運行時(未檢)異常,因為它們表示程序的一個錯誤。拋出這樣的異常時會中斷程序的執行。
注:其參數是C類型的catch塊,可以捕獲類C或C的任何後代類的異常。
最後更新:2017-06-26 18:31:58