Java之異常處理基礎知識

該文中是大段的文字描述,我已經進行了簡化,希望這樣可以幫助到讀者,減少閱讀文字那焦躁的心靈。將更多地乾貨帶給你們。

Java中異常處理的目的

在於通過使用少數目前數量的代碼來簡化大型、可靠的程序的生成,並且通過這種方式可以讓你更加自信:你的應用中沒有未處理的錯誤。

對異常處理的實現可以追溯到20世紀60年代的操作系統,甚至於BASIC語言的on error goto語句。而c++的異常處理機制基於Ada,Java中的異常處理則建立在c++的基礎之上。

使用異常處理的好處

不必在方法調用處進行檢查,因爲異常機制將保證能夠捕獲這個錯誤。

基本異常

異常情形(exceptional condition):是指阻止當前方法或作用域繼續執行的問題。不能繼續執行下去,因此從當前環境跳出,把問題提交給上一級環境。

普通問題:在當前環境下能得到足夠的信息,總能處理這個錯誤。

拋出異常後:首先,同Java中其他對象的創建一樣,將使用new在堆上創建一場對象。然後,當前的執行路徑(它不能繼續執行下去)被終止,並且從當前環境中彈出對異常對象的引用。此時,異常處理機制接管程序,並開始尋找一個恰當的地方來繼續執行程序。

這個恰當的地方就是異常處理程序,它的任務就是將程序從錯誤狀態恢復,以使程序能要麼換一種方式運行,要麼繼續運行下去。

異常參數

所有的異常類都有兩個構造器:一個是默認構造器;另一個是接受字符串作爲參數,以便能把相關信息放入異常對象的構造器:

throw new NullPointerException(”t=null”);

捕獲異常

監控區域(guarded region):一段可能產生異常的代碼,並且後面跟着處理這些異常的代碼。

  1. try塊

爲了防止在方法內部拋出異常,導致方法在拋出異常的過程中結束,我們在方法內設置一個特殊的塊來捕獲異常。

在這個塊中“嘗試”各種(可能產生異常的)方法調用,因此稱爲try塊。跟在關鍵字try後面的普通程序塊。

try{

//Code that might generate exceptions

}

     2.異常處理程序

拋出的異常必須在某處得到處理。這個“地點”就是異常處理程序。異常處理程序緊跟在try塊之後,以關鍵字catch表示:

try{
//Code that might generate exceptions
}catch(Type1 id1){
//handle exceptions of Type1
}catch(Type2 id2){
//Handle exceptions of Type2
}
//etc

注意:

在try塊的內部,許多不同的方法調用可能會產生類型相同的異常,而你只需要提供一個針對此類型的異常處理程序。

終止與恢復

      異常處理理論上有兩種基本模型。

      Java支持終止模型(它是Java和C++所支持的模型)。

在這種模型中,將假設錯誤非常關鍵,以至於程序無法返回到異常發生的地方繼續執行。一旦異常被拋出,就表明錯誤已無法挽回,也不能回來繼續執行。

      另一種爲恢復模型。

意思是異常處理程序的工作是修正錯誤,然後重新嘗試調用出問題的方法,並認爲第二次能成功。

      對於恢復模型來說:我們通常希望異常被處理之後能夠繼續執行程序。如果想要用Java實現類似恢復行爲,那麼在遇見錯誤時就不能拋出異常,而是調用方法來修正該錯誤。或者,把try塊放在while循環中,就會不斷地進入try塊,直到得到滿意的結果。

 

 

該文章更新到這裏就要結束了,希望在大家閱讀之後,對大家有了幫助,這樣我的內心纔是喜悅的,纔是對我最大的鼓勵!

謝謝大家,我們共同成長!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章