java的方法、重構,調試、異常處理機制總結

  • if-else:基於Boolean的雙分支
  • switch-case:基於數字(整數、char、枚舉、byte)、字符串類型的多分支
  • 方法
    • 方法不是必須的,但是方法體現的是模塊化編程思維,是高級語言擁有的特性
    • 方法的簽名:方法名稱+參數列表(參數有嚴格的順序) 注意無關返回值,java是根據簽名區分到底調用那個方法
    • 方法命名:簡明知意:簡單明瞭,一看就知道含義
    • 一個類裏面不能有兩個簽名相同方法
    • 方法參數的傳遞,實際上由參數的類型決定(參數類型:基本類型、引用類型)也叫傳值和傳址
    • 方法的重載:是從面向對象的多態的一種體現,只要求方法簽名不同
    • 方法的重寫:是從面向對象中繼承和派生的角度考慮,只要求子類重新改寫父類方法的方法體,但返回值和方法簽名不變
  • 重構之提取方法
    • 將某一段代碼抽取出來,構成方法,Eclipse快捷鍵shift+alt+M
    • 作用:使用模塊化、單一職責,功能拆分等思想,避免代碼過於冗長導致的難以閱讀和維護
  • 程序調試
    • 通過調試可以觀察程序的執行過程和內部數據(斷點和單步執行功能是由jvm和CPU聯合支持的)
    • 斷點:程序執行到這個位置會停下來。【單步執行F5(進入方法),F6(跳過方法)】
  • 調用棧:棧是一個只有一個口的容器,即棧頂,先進後出,方法調用時會在內存開闢一塊存儲空間,作爲當前線程的棧空間。每個線程都有自己的調用棧
    • 調用一個方法時會向棧壓入一個棧幀,用於存儲這個方法的參數和局部變量,稱爲進棧
    • 返回時,棧幀會彈出,相應的參數和局部變量也會被清除,稱爲出棧
    • 如果調用層級過深,可能會發生棧溢出,尤其是執行遞歸運算的時候
    • 程序的執行速度很快,所以棧幀的生存時間極短,棧波動頻繁,這也就使得棧內保存的局部變量來不及被外界使用就被銷燬了 ,棧的這種特性使得局部變量無法被外界調用



  • 異常處理機制
    • 異常處理(try/catch)和異常傳遞(throws)以及手動拋出異常(throw)
    • 受查異常:受到檢查的異常,必須傳遞出去(throws)或者處理掉(try/catch),不能忽略
  • 異常捕獲過程
    • 當程序執行到try塊時會在出錯點之前建立一個安全點,
    • 一旦try塊中發生錯誤,jvm就會檢查並收集錯誤信息(錯誤的原因類型,位置,當前棧結構),然後利用這些信息創建一個Exception對象(類型取決於錯誤的原因)並拋出,這時runtime system得到一個異常類,它將會沿着方法的調用棧逐層回溯,尋找處理這一異常的代碼。找到能夠處理這種類型異常的方法後,運行時系統把當前異常交給這個方法處理;如果找不到可以捕獲異常的方法,則運行時系統將終止,相應的Java程序也將退出。
    • 可以通過這個異常對象相應的方法獲取對應的異常信息(嘗試閱讀異常信息排查錯誤)
    • try塊中,從出錯位置開始到catch上面的這段代碼不會執行,但finally 塊無論怎樣都會執行

    • 只要類型匹配就被捕獲。但是子類異常優先放置在最內層,父類異常放置在外層,使得捕獲的異常更準確
    • 出現異常時,jvm會掃描棧,查找try建立的安全點,直到找到該點(然後交由匹配的catch塊處理),若找不到而到達棧底則程序崩潰
    • catch是一個異常匹配過程,只有類型匹配成功纔會捕獲異常,否則異常會拋給方法的調用者。
  • 異常的分類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章