Why Throws 異常
異常首先得提幾個問題:
1、異常為什麽會出現,從哪裏來, (異常從何而來)
答: 當你調用某些方法時,首先得為這些方法做一些 預先的處理, 比如 當你用getName()獲取 對象的一個名字屬性,如果你所調用的對象是空的話,
那麽程序就不可 執行,但是又不能告訴你, 所以用一個錯誤來提示你. 這個錯誤異常“躲”在了該方法中,一旦調用,異常錯誤就跑出來了
2、為什麽能讓java程序停止,有什麽方法規避呢? (異常的出現 為什麽會讓程序停止)
答: 程序 一個步驟 出錯,程序就會被 強制 禁止。 方法: 1、使用try catth去捕獲異常 2、將錯誤交給父類去處理,throws exception
3、我們為什麽 能在程序之前 就能拋出異常,從而使程序繼續進行下去 (這就是重點了)
答:在虛擬機運行時候拋出的異常就是 運行時異常,包括 NullPointExcetion,ClassCastException,IndexOutOfBoundsException。
總之:它肯定是存在的,我們有時在想,我根本就沒有在我自己定義類裏面的方法上添加異常,可是它也會拋出異常,這是因為類在程序判斷的時候,
滿足了某些條件,於是程序就自動實例化了一個錯誤的對象,然後把這個錯誤給拋了出來,比如說NullPointerException空指針異常,
你可能會說這個錯誤的話,我找不到它定義在哪裏啊?可是你要知道的是,你的方法終究是要運行的,當你運行的時候,
虛擬機在執行方法的時候它是會進行檢查的,它檢查的時候當然也是調用方法了,而在調用之前,它會把對你將要調用的對象進行檢查,
如果有錯就會實例化一個NullPointerException出來,檢查是很容易理解的事情,就像你實例化了一個類,然後在運行的時候,
對這個類的一些信息進行判斷,只是jvm檢查的比較復雜,但是思想肯定是一致的。
。
重點: 異常的分析
異常被打印的順序是:
1、先打印父類的異常信息 2、再打印子類的異常信息
因為對象實例化的過程也就是這個順序,所以打印的時候順序也是一樣的,當然如果你已經對錯誤進行了處理的話,、
那麽自然父類的錯誤就不會被打印出來了,所以說當出現異常的時候,那些最先打印出來的都是父類的信息,你出錯的調用位置應該是在下邊子類中。
by----半抄
Why Throws 異常