本文向大家描述一下當JVM異常發生時Java虛擬機采取的幾種措施JVM異常情況在Java中被稱作Error(錯誤)或Exception(JVM異常)是Throwable類的子類
JVM異常捕捉的幾種情況
JVM異常情況在Java中被稱作Error(錯誤)或Exception(JVM異常)是Throwable類的子類在程序中的原因運行時錯如對一個空指針的引用程序使用了throw語句
當JVM異常發生時Java虛擬機采取如下措施
檢查與當前方法相聯系的catch子句表每個catch子句包含其有效指令范圍能夠處理的JVM異常類型以及處理JVM異常的代碼塊地址
與JVM異常相匹配的catch子句應該符合下面的條件造成JVM異常的指令在其指令范圍之內發生的JVM異常類型是其能處理的JVM異常類型的子類型如果找到了匹配的catch子句那麼系統轉移到指定的JVM異常處理塊處執行;如果沒有找到JVM異常處理塊重復尋找匹配的catch子句的過程直到當前方法的所有嵌套的catch子句都被檢查過
由於虛擬機從第一個匹配的catch子句處繼續執行所以catch子句表中的順序是很重要的因為Java代碼是結構化的因此總可以把某個方法的所有的JVM異常處理器都按序排列到一個表中對任意可能的程序計數器的值都可以用線性的順序找到合適的JVM異常處理塊以處理在該程序計數器值下發生的JVM異常情況
如果找不到匹配的catch子句那麼當前方法得到一個未截獲JVM異常的結果並返回到當前方法的調用者好像JVM異常剛剛在其調用者中發生一樣如果在調用者中仍然沒有找到相應的JVM異常處理塊那麼這種錯誤將被傳播下去如果錯誤被傳播到最頂層那麼系統將調用一個缺省的JVM異常處理塊
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26700.html