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

7 篇文章 0 订阅

文章目录

前言

之前做的一个项目,在实体类已经将属性、有参构造、无参构造、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

谢谢您的阅读!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值