Java異常大詳解

一般來說,所謂的異常就是違反Java的語義導致程序中斷指令流,但是好多同學看完Java的異常處理之後,還是不太
清楚究竟Java異常是幹嘛的,怎麼來學習Java異常,感覺是無處下手,那我們一起來看看Java異常吧!
首先,我們要知道一些常用的關鍵字:try,catch,throw,throws,finally,對就是這五個關鍵字,相信大家都很熟悉,那具體的
異常處理的流程是什麼?
一般來說,簡單異常的模式是這樣的,讓大家有個感性的認識:
try {
有可能產生異常的語句 ;
} [catch (異常類型 對象) {
異常處理 ...
} catch (異常類型 對象) {
異常處理 ...
} ....] [
finally {
不管是否出現異常都要執行此操作
}
其中,要知道try後面所跟的語句就是可能產生異常的語句,而catche就是去匹配異常,因爲Java是有好多的異常類型,
但是一般的都是在Java.lang.Throwable.Exception,所以一般我們進行討論的異常就是針對Exception來說的,說到這兒就有
一個好多人都問的面試題:請解釋Error和Exception的區別,
那不知道的人是感覺很難,從來都沒聽過,其實error就是Java虛擬機的錯誤,他不是程序運行時出現的錯誤,
而Exception是程序運行時出現的異常,這個時候Java是有Java異常機制的,可以去捕獲異常(Catche)。
說了這麼多,好多人還是不清楚究竟什麼是Java異常,那麼我們再繼續討論:


異常處理流程:
·    1.當程序運行之中產生了異常之後, JVM 會根據產生的異常類型, 找到與之匹配的 XxxException 類並且自動創建一個異常
     類的實例化對象;
·    2.隨後需要判斷該程序代碼之中是否可以進行異常處理, 就是判斷是否可以通過 try 來捕獲此異常對象, 如果沒有相關的異
     常處理, 則程序會中斷當前的執行操作, 而後交由 JVM 做默認處理, 輸出異常信息之後, 程序中斷執行;
·    3.如果說現在有異常處理, 那麼此異常類的實例化對象將會由 try 語句捕獲;
·    4.隨後會交由 catch 匹配異常類型, 根據每一個已經出現的 catch 類型進行匹配處理, 如果此時已經匹配到了合適的 catch 的
      異常, 那麼將會使用此 catch 中所帶的語句進行處理, 如果沒有匹配上, 則繼續向後面的 catch 匹配, 那麼這個時候就有可能產生
      兩種情況: 匹配成功並且正常處理、 匹配失敗沒有處理;
·    5.不管現在是否匹配 catch 成功都會將操作交由 finall 代碼執行, 進行一些固定的收尾操作;
·    6.隨後在 finally 代碼執行完畢後, 會判斷此異常是否正常處理, 如果正常處理了, 則繼續向後執行其它代碼, 如果沒有正常
      處理了, 則交由 JVM 默認處理。(JVM的處理結果,其實就是輸出異常的信息,然後程序中斷執行)
 

 
相信到這兒的時候,也應該知道Java異常處理機制了吧,那throw和throws又是有什麼關係呢:(很容易被問的面試題)
1.throw 表示方法之中手工拋出異常;
2.在方法聲明的時候,表示將方法中可能出現的異常告訴調用者,也就是說,方法調用的時候,要明確進行異常的處理;如下:
class MyMath {
public static int div(int x,int y) throws Exception {
return x / y ;
}
}
public class TestDemo {
public static void main(String args[]) throws Exception {
System.out.println(MyMath.div(10,0)) ;
 
 
 
  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章