Java--详细介绍--不可串行化导致异常的处理(NotSerializableException)

文章目录

前言

之前做的一个项目,在实体类已经将属性、有参构造、无参构造、toString…那些需要配置的文件都配置好了,这时候boss让我们在试题中在增加一个属性,比如:

public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

在所有都已经搭建好的情况下,我需要往实体Person再增加一个性别的属性(private String sex),然后将其有参和无参以及get/set方法等都弄好之后,运行报出异常如下:

"D:\Program Files\Java\jdk-9.0.1\bin\java" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 
2017.3.2\lib\idea_rt.jar=60159:D:\Program Files\JetBrains\IntelliJ IDEA 2017.3.2\bin" -Dfile.encoding=UTF-8
 -classpath F:\heima\GZ\EmploymentClass\HomeWork\out\production\HomeWork 
 com.itheima.Day11.Class.Demo09ObjectOutputStream对象序列化流.Demo09
Exception in thread "main" java.io.NotSerializableException:
 com.itheima.Day11.Class.Demo09ObjectOutputStream对象序列化流.Person
	at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185)
	at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
	at com.itheima.Day11.Class.Demo09ObjectOutputStream对象序列化流.Demo09.main(Demo09.java:17)

内容

遇到异常不用怕,可以慢慢分析它,

"D:\Program Files\Java\jdk-9.0.1\bin\java" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 
2017.3.2\lib\idea_rt.jar=60159:D:\Program Files\JetBrains\IntelliJ IDEA 2017.3.2\bin" -Dfile.encoding=UTF-8
 -classpath F:\heima\GZ\EmploymentClass\HomeWork\out\production\HomeWork 
 com.itheima.Day11.Class.Demo09ObjectOutputStream对象序列化流.Demo09

这一段是关于我的文件所在的地址,这个可以直接忽略,因为这方面只负责编译和存储文件内容,所以直接看接下来的部分。

Exception in thread "main" java.io.NotSerializableException:

这一段是:主方法处抛出java.io.NotSerializableException异常。
这说明异常出现的地方是没有可串行化的错误,那么怎样才能让代码不出现这个异常呢?
百度,问问度娘这方面是否有解决方案,直接复制错误粘贴到百度搜索栏,立马就有解决方案。
在这里插入图片描述
直接打开置顶的查看一下,内容如下
在这里插入图片描述
原来这个异常是实体类没有实现Serializable接口,此时去实体类实现以下接口,再试一下运行。
在这里插入图片描述
OK,立马可以执行成功了,然后查看一下内容
在这里插入图片描述
因为我的电脑Win系统默认为GBK,而IDEA设置默认的为UTF-8,所以用IDEA打开文件会出现乱码,但是这都不影响。
OK,保存成功。

总结

  1. 首先,遇到异常不用惊慌,我们可以慢慢来解决
  2. 其次,分析异常,如内容中我们分析NotSerializableException一样分析。
  3. 针对异常若有好的解决方法,就立马解决,没有就立即寻找度娘寻找帮助
  4. 针对度娘上面给出的内容作出一定的鉴别,有些方法不一定能很好的解决当下的问题,而且还可能会让问题变得复杂。
  5. 当问题解决之后,即各方面运行不出现异常的情况之下,及时总结出现异常的情况,以防下一回出现类型的情况不能立马解决带来的时间浪费。

end

谢谢您的阅读!

发布了228 篇原创文章 · 获赞 315 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/Luojun13Class/article/details/83957451