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:公眾號 |