當前位置:
首頁 > 最新 > java常見異常匯總

java常見異常匯總

程序猿的成長之路,從這開始..........

在6月的投票中,結果昨天已經出來了,大家多數的希望多推送一些java的基礎知識。首先來一下熱身,debug模式啟動起來..........

身為一個程序猿,開發過程中(調研--需求--產品--UI--開發--測試--上線),肯定會出現各種各樣的BUG,如:程序異常、環境異常、伺服器異常等等,另各位防不勝防,那麼出現問題後,首先想到一個萬能方法,叫做百度,除了百度,小編也總結了下常見的異常以及處理方式,冰凍三尺非一日之寒,各位不要著急。

一:異常匯總:

1:java.lang.NullPointerException 空指針異常問題

解析:

所謂的指針,就是Java中的對象的引用。比如String s;這個s就是指針

所謂的空指針,就是指針的內容為空,比如上面的s,如果令它指向null,就是空指針

所謂的空指針異常,就是一個指針是空指針,你還要去操作它,既然它指向的是空對象,它就不能使用這個對象的方法。比如上面的s假如為null,你還要用s的方法,比如s.equals( String x);那麼就會產生空指針異常

處理:

首先要看的是異常日誌(不會看日誌的請谷歌),定位到日誌所報異常的代碼行,啟用debug模式,調試程序,看看哪個對象是null,並分析具體原因,如果對象可為空,則在使用之前判斷是否為空條件即可

2:ConnectTimeoutException 鏈接超時異常問題

解析:

出現這個異常一般有幾個方面,資料庫連接,第三方地址連接,socket連接

處理:

不管是哪種連接超時,首先看一下連接地址的IP或者埠號是否錯誤(90%的錯),如果是網路原因,請設置連接超時時間(一般是socketTime),如下:

3:ArrayIndexOutOfBoundsException 數組越界異常

解析:

數組索引越界異常原因:訪問了不存在的索引

處理:

debug模式調試數組,看下數據的下標是否溢出或者不存在而導致的越界(for循環使用較多)

4:ClassCastException 類型轉換異常

解析與處理:

ClassCastException是JVM在檢測到兩個類型間轉換不兼容時引發的運行時異常。此類錯誤通常會終止用戶請求。在執行任何子系統的應用程序代碼時都有可能發生ClassCastException異常。通過轉換,可以指示Java編譯器將給定類型的變數作為另一種變數來處理。對基礎類型和用戶定義類型都可以轉換。Java語言規範定義了允許的轉換,其中大多數可在編譯時進行驗證。不過,某些轉換還需要運行時驗證。如果在此運行時驗證過程中檢測到不兼容,JVM就會引發ClassCastException異常

5:java.lang.ClassNotFoundException類未找到異常

解析與處理:

這裡主要考慮一下類的名稱和路徑是否正確即可,通常都是程序試圖通過字元串來載入某個類時可能引發 異常,比如:調用Class.forName();或者調用ClassLoad的finaSystemClass();或者LoadClass();

6:java.lang.NumberFormatException 對象轉換異常( 字元串轉換為數字異常)

解析與處理:

當試圖將一個String轉換為指定的數字類型,而該字元串確不滿足數字類型要求的格式時,拋出該異常.如現在講字元型的數據「123456」轉換為數值型數據時,是允許的。但是如果字元型數據中包含了非數字型的字元,如123#56,此時轉換為數值型時就會出現異常。系統就會捕捉到這個異常,並進行處理.

7:java.lang.NoSuchMethodException方法不存在異常

解析與處理:

當程序試圖通過反射來創建對象,訪問(修改或讀取)某個方法,但是該方法不存在就會引發異常

8:java.lang.OutOfMemoryException內存不足錯誤

解析與處理:

當可用內存不足以讓Java虛擬機分配給一個對象時拋出該錯誤。

9:java.lang.InterruptedException 被中止異常

解析與處理:

當某個線程處於長時間的等待、休眠或其他暫停狀態,而此時其他的線程通過Thread的interrupt方法終止該線程時拋出該異常。

10:java.lang.RuntimeException 運行時異常

解析與處理:

是所有Java虛擬機正常操作期間可以被拋出的異常的父類。

11:javax.servlet.jsp.JspException: Cannot retrieve mapping for action /index.htm(/index.htm是你的action名字)

解析與處理:

action沒有再struts-config.xml 中定義,或沒有找到匹配的action,例如在JSP文件中使用

其它異常分類:

違背安全原則異常:SecturityException

操作資料庫異常:SQLException

輸入輸出異常:IOException

通信異常:SocketException

二:異常的處理方式:

1)捕獲異常:在Java程序運行過程中系統得到一個異常對象是,它將會沿著方法的調用棧逐層回溯,尋找處理這一異常的代碼。找到能夠處理這種類型異常的方法後,運行時系統把當前異常交給這個方法處理;如果找不到可以捕獲異常的方法,則運行時系統將終止,相應的Java程序也將退出。捕獲異常是通過try-catch-finally語句實現的。語法為:

try{

...

}catch(ExceptionName1 e){

...

}catch(ExceptionName2 e){

...

}finally{

...

}

2)聲明拋棄異常:當Java程序運行時系統得到一個異常對象時,如果一個方法並不知道如何處理所出現的異常,則可在方法聲明時,聲明拋棄異常。聲明拋棄異常是在一個方法聲明中的throws子句中指明的。如:

public int read() throws IOException{

...

}

其中throws IOException就是聲明拋棄異常,throws後可以跟多個異常類型。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 公眾號 的精彩文章:

從村姑走向世界!燕仙岩將建旅遊風景區,已列入龍川縣土地利用總體規劃!從文物保護到旅遊開發的華麗轉身!
辯成更好的自己(二)
你看起來很好吃!吶,欠你的滷肉做好啦!

TAG:公眾號 |