1. 程式人生 > >015_面向對象_異常,包和Object類

015_面向對象_異常,包和Object類

交付 .com tro 很多 處理方式 finall final 遍歷 object類

1.異常(http://blog.csdn.net/hguisu/article/details/6155636)

  (1)異常的定義

    異常是指在運行期間發生的不正常情況,java中用類的形式對不正常情況進行了描述和封裝,稱為異常類。不同的問題用不同的類進行具體的描述。

問題很多,描述的類也很多,將其共性進行向上抽取,形成了異常體系。

  (2)異常的體系

        技術分享圖片

    ①Error(程序不可處理的)
       是由jvm拋出的嚴重性問題,這種問題發生一般不針對性處理,直接修改程序。
    ②Exception(程序可以處理的)

  (3)Exception的分類

    ①編譯時異常:Exception中除了子類RuntimeException的異常體系。

      這種問題一旦出現,希望在編譯時就進行檢測,讓這種問題有對應的處理方式,都可以針對性的處理
    ②運行時異常:Exception中的RuntimeException體系。
      這些異常一般是由程序邏輯錯誤引起的,程序應該從邏輯角度盡可能避免這類異常的發生。

      運行時異常的特點是Java編譯器不會檢查它,當程序中可能出現這類異常,即使沒有用try-catch語句捕獲它,也沒有用throws子句聲明拋出它,也會編譯通過。

  (4)throw和throws的區別

    ①throws使用在方法上,throw使用在函數內

    ②throws拋出的是異常類,可以拋出多個,用逗號隔開,throw拋出的是異常對象。

  (5)異常處理的機制

    ①拋出異常:當一個方法出現錯誤引發異常時,方法創建異常對象並交付運行時系統,異常對象中包含了異常類型和異常出現時的程序狀態等異常信息。運行時系統負責尋找處置異常的代碼並執行。

    ②捕獲異常:在方法拋出異常之後,運行時系統將轉為尋找合適的異常處理器。潛在的異常處理器是異常發生時依次存留在調用棧中的方法的集合。當異常處理器所能處理的異常類型與方法拋出的

          異常類型相符時,即為合適 的異常處理器。運行時系統從發生異常的方法開始,依次回查調用棧中的方法,直至找到含有合適異常處理器的方法並執行。當運行時系統遍歷調用棧而未

          找到合適 的異常處理器,則運行時系統終止。同時,意味著Java程序的終止。

          具體格式是:

              try
              {
                //需要被檢測異常的diamond
              }
              catch(異常類1 變量)//該變量用於接受發生的異常
              {
                //處理異常的代碼
              }

              catch(異常類2 變量)//該變量用於接受發生的異常
              {
                //處理異常的代碼
              }
              finally
              {
                //無論是否捕獲或處理異常,一定會被執行的代碼,當在try塊或catch塊中遇到return語句時,finally語句塊將在方法返回之前被執行。
              }

           技術分享圖片

  (6)異常處理的原則

    1.函數內容如果拋出需要檢測的異常,那麽函數上必須要聲明。否則必須在函數內用try catch捕捉,否則編譯失敗

    2.如果調用到了聲明異常的函數,要麽try catch要麽throws,否則編譯失敗

    3.什麽時候catch,什麽時候throws呢?
      功能內容可以解決,用catch
      解決不了,用throws告訴調用者,由調用者解決

    4.一個功能如果拋出了多個異常,那麽調用時,必須有對應的多個catch進行

      針對性處理。內部有幾個需要檢測的異常,就拋幾個異常,拋出幾個,就catch幾個。

    
        

015_面向對象_異常,包和Object類