自學Java第28天:什麼叫異常?

自學Java第28天:什麼叫異常?

【Java】基礎28:什麼叫異常?

閃退,我們在使用手機或者電腦的過程中,有時會遇到這種情況,這也是使用者最討厭的情況之一。

一般一個開發軟體,如果時常出現閃退的話,使用者體驗是非常差的。

所以要儘可能避免這種情況的發生。

那為什麼會閃退呢?

就是程式它遇到了問題,又沒有及時地處理,便只有崩潰了。而這種情況,便是異常。

在Java世界裡面,異常指的是程式在執行過程中,出現的非正常的情況,最終會導致JVM的非正常停止。

它本身就是Java裡的一個類,最上層的父類是

Throwable

,其下有兩個子類:

Error與Exception

一、Error

Error:錯誤的意思,無法透過處理來解決的錯誤。

比如說我建立了一個數組,給它定義的長度為10億,理論上是可以的,Java又沒有要求說陣列長度不能有10億。但是,執行下看看:

自學Java第28天:什麼叫異常?

OutOfMemoryError:記憶體溢位。

也就是說,我的電腦記憶體不夠用了,因為建立陣列是需要記憶體的,所以它就報出錯誤。

這就好比,我們電腦下了一款非常牛逼的單機遊戲。

執行的時候發現電腦配置不夠,動不動就崩。

電腦又沒法拓展,該怎麼辦?

解決這個問題只有一個方法:換一臺電腦,別無他法。

與之對應的,在Java程式裡面若是遇到這樣的問題,就只能乖乖地修改程式碼了。

二、Exception

我們平時常說的異常指的就是它,因為它是可以透過程式設計師的處理將其解決的,所以接觸的更加多一點。

比較常見的如下:

自學Java第28天:什麼叫異常?

ArrayIndexOutOfBoundsException:陣列越界異常。

不要看它這麼長好像很複雜的樣子,其實拆開來看單詞都很簡單:Array陣列;index索引;OutOfBounds超出界限;Exception異常。

合在一起就是陣列的索引超出了界限異常,也就是陣列越界異常。

那麼出現了異常Java裡面是如何處理的?

我們舉一個拋繡球的例子來說明下jvm處理異常流程。

好,現在有一個異常,被Java虛擬機器知道了。

這個異常就相當於繡球。

Java虛擬機器就相當於古代拋繡球的女子。

然後就拋繡球,這時候一個人接到了繡球,但是他發現不想娶這個女子,就繼續拋給別人,接到的人也不想娶,就一路拋,最後又拋回到了那個女子的手中。

於是女子非常的生氣,憤怒地罵了幾句就走了。

在Java世界裡面:出現了異常,然後都不處理,一直往前拋,最終拋給了Java虛擬機器。

於是Java虛擬機器非常地生氣,列印錯誤資訊,終止了程式。

程式終止

這件事情在開發過程中是能不出現就不要出現的。

這也很好理解,你想啊,古代女子若是拋繡球都沒人接,多丟人呀,她這輩子大機率不就完了麼?

所以出現了異常要處理異常。

當然,我舉的這個例子並不準確,只是對於剛接觸Java沒多久的人來說,可能更好理解。

三、異常的處理

一定要搞清楚,程式設計師處理異常,不是說這種型別的問題不會出現了,而是說出現了問題要保證程式不能崩潰。

因為使用者是不確定的,就比如說使用者銀行卡里只有10塊錢,它提現時硬是要輸入10000塊,這就會出現異常。

如果是Java虛擬機器來處理,程式就直接崩潰了呀,這樣顯然是不行的。

而程式設計師要將其處理成:我們丟擲資訊,提示使用者:“卡內餘額不足”,保證程式不會停止執行。

這就是異常的處理,不是說問題再也不會出現了,而是說出現了問題要保證程式不能崩潰,並提示使用者。

那麼如何處理異常?

方式一:throw

自學Java第28天:什麼叫異常?

因為Java裡面異常本身就是一個類,所以建立對應的異常物件,再丟擲說明。

方式二:throws

關鍵字

throws

運用於方法上,宣告方法內部可能產生異常,用於表示當前方法不處理異常,而是提醒該方法的呼叫者來處理異常(丟擲異常)。

自學Java第28天:什麼叫異常?

throws寫在方法名後面,後面可以接多個異常,用逗號隔開。

throws本身並沒有處理異常

,而是提示讓方法呼叫者我這可能有異常,誰呼叫我得處理,並且也不是說一定就會出現異常,也有可能沒有。

throws這個關鍵字就是警示提醒的作用,並沒有處理異常。

方式三:try…catch

真正處理異常了的其實就兩種方式:

throw+建立異常物件,並說明。

try…catch處理異常。

自學Java第28天:什麼叫異常?

try:可能會產生異常的程式碼。

catch:用來進行某種異常的捕獲,若是出現了括號中的異常,就丟擲異常並描述資訊,可以多個catch

finally:無論異常是否發生,都會執行。

以上就是對於異常的一些基本說明,暫時先就到這兒,明天再繼續深入研究異常。

總結:

自學Java第28天:什麼叫異常?