《數據結構與抽象:Java語言描述(原書第4版)》一JI2.3 拋出異常
本節書摘來華章計算機《數據結構與抽象:Java語言描述(原書第4版)》一書中的第2章 ,[美]弗蘭克M.卡拉諾(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 羅得島大學 新英格蘭理工學院 辛運幃 饒一梅 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。
JI2.3 拋出異常
雖然處理異常的能力十分有用,但知道如何拋出異常也很重要。本節來看看如何拋出異常。應該僅在方法內,當你不能使用合理的方式來解決不正常或意外事件的情形下,才拋出異常。
throw語句。方法執行throw語句就拋出一個異常。一般的形式是
不是使用一條單獨的語句來創建異常對象,程序員通常在throw語句中創建對象,如下麵這個例子:
這個語句創建類IOException的一個新對象並拋出它。與應該盡可能地捕獲具體異常一樣,拋出異常也應該盡可能地具體。
雖然可以調用異常類的默認構造方法,比如在前一個例子中所做的那樣,但我們也能提供帶字符串參數的構造方法。由此產生的對象的數據域將含有該字符串,且在處理異常的catch塊中可以使用這個對象和這個字符串。然後catch塊可使用異常的方法getMessage來獲取這個字符串,如之前所見。默認構造方法為這個字符串提供默認值。
語法:throw語句有下列語法:
其中exception_object是異常類的一個實例,它一般通過調用類的兩個構造方法之一來創建:
通過異常的方法getMessage,在捕獲異常的代碼段中,可使用默認構造方法提供的字符串或字符串message。
設計決策:如果發生了不常見的情況,應該拋出異常嗎?
- 如果可以通過合理的方式解決不常見的情況,則可能使用判定語句而不是拋出一個異常。
- 如果對不正常情況的幾種解決辦法都是可行的,且你想讓客戶來選擇,則應該拋出一個受檢異常。
-
如果程序員因不正確地使用你的方法而使代碼出錯了,則你可以拋出一個運行時異常。但是,如果隻是為了不讓客戶去處理它,則不應該拋出一個運行時異常。
程序設計技巧:如果方法含有一個拋出異常的throw語句,則在該方法頭添加一個throws子句,而不是在方法體內捕獲異常。一般地,拋出異常及捕獲異常應該在不同的方法內。
程序設計技巧:不要弄混關鍵字throw和throws
在方法頭中用Java保留字throws來聲明這個方法可能拋出的異常。在方法體中用保留字throw實際拋出一個異常。
最後更新:2017-06-26 18:32:08