1. 程式人生 > >常見的異常產生的原因和解決辦法

常見的異常產生的原因和解決辦法

一、陣列越界異常
Java.lang.ArrayIndexOutofBoundsException
產生的原因:訪問了不存在的索引
解決的辦法:索引0到陣列長度-1的範圍內取值
二、空指標異常
Java.lang.NullPointerException
產生的原因:物件沒有建立就訪問了元素或者方法或者屬性
解決的辦法:先找出出現的所有引用型別,判斷哪個物件是沒有new的元素或者方法或者屬性,
   如果沒有就建立該物件
三、沒有這樣的元素異常
Java.util.NoSuchElementException
產生的原因:在迭代器迭代的時候沒有下一個元素了
解決的辦法:在迭代器之前做相對應得判斷,如果沒有元素了就不迭代輸出了
四、併發修改異常
Java.util.ConcurrentModificationException
產生的原因:在迭代器迭代的同時使用集合修改元素
解決的辦法:使用普通for迴圈來遍歷
    使用toArray來遍歷
    使用ListIterator來遍歷
五、型別轉換異常
Java.lang.ClassCastException
產生的原因:在向下轉型的過程中,沒有轉換成真實的型別
解決的方法:在向下轉型之前使用instanceof關鍵字對所有子類做逐一判斷
六、演算法出錯異常
Java.lang.ArithmeticException
產生的原因:除數不能為零
解決的辦法:改變除數的結果再進行測試
七、沒有序列化異常
Java.io.NotSerialzableException
產生的原因:沒有實現serializable介面
解決的辦法:對需要的寫入到檔案的類實現serializable介面,
    表示允許該類的該類寫入到檔案
八、無效類異常
Java.io.InvalidClassException
產生的原因:在寫入的是時候有一個對應的id寫入eg:stream class desc serialversionUID=-8964704075147120624
    讀取時候按照對應的id讀取eg:local class serialversionUID=-8964704075147120624
    對檔案做了修改後:
   流中的id stream classdesc serialVersionUID = -8964704075147120624
               修改檔案之後新的id local class serialVersionUID = 8115451977320215123
    執行報錯了的提示:eg:com.yd.iodemo03.Person;
      local class incompatible: 
      stream classdesc serialVersionUID = -8964704075147120624, 
       local class serialVersionUID = 8115451977320215123
解決的辦法:給類新增一個固定的序列化id,給的方式有兩種:
    1、新增一個固定的id
    2、新增一個系統自動生成的id
    推薦是用第二種,隨你自己的選擇