常见的异常产生的原因和解决办法

时间:2022-02-01 14:46:41
一、数组越界异常
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
    推荐是用第二种,随你自己的选择