標籤:
動手動腦1
CatchWho.java運行結果:
CatchWho2.java運行結果:
EmbedeFinally.java運行結果:
finally語句塊一定會執行嗎?
SystemExitAndFinally.java運行結果:
只有與 finally 相對應的 try 語句塊得到執行的情況下,finally 語句塊才會執行。如果在try語句塊之前返回(return)或者拋出異常,try對應的finally語句塊就不會執行。
動手動腦2
如何跟蹤異常的傳播路徑?
- 當程式中出現異常時,JVM會依據方法調用順序依次尋找有關的錯誤處理程式。
- 可使用printStackTrace 和 getMessage方法瞭解異常發生的情況:
- printStackTrace:列印方法呼叫堆疊。
- 每個Throwable類的對象都有一個getMessage方法,它返回一個字串,這個字串是在Exception建構函式中傳入的,通常讓這一字串包含特定異常的相關資訊。
PrintExpressionStack.java運行結果:
動手動腦3
回答問題
. 左邊的程式運行結果是什嗎?
2. 你如何解釋會得到這樣的輸出?
在調用的時候,對象是子類的,就調用子類的方法,對象是父類的就調用父類的方法。
3. 電腦是不會出錯的,之所以得到這樣的運行結果也是有原因的,那麼從這些運行結果中,你能總結出Java的哪些文法特性?
1當子類與父類擁有一樣的方法,並且讓一個父類變數引用一個子類對象時,到底調用哪個方法,由對象自己的“真實”類型所決定,這就是說:對象是子類型的,它就調用子類型的方法,是父類型的,它就調用父類型的方法。這個特性實際上就是物件導向“多態”特性的具體表現。
2如果子類與父類有相同的欄位,則子類中的欄位會代替或隱藏父類的欄位,子類方法中訪問的是子類中的欄位(而不是父類中的欄位)。如果子類方法確實想訪問父類中被隱藏的同名欄位,可以用super關鍵字來訪問它。
3如果子類被當作父類使用,則通過子類訪問的欄位是父類的.
動手動腦課堂作業7---------