前言
之前做的一个项目,在实体类已经将属性、有参构造、无参构造、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,保存成功。
总结
- 首先,遇到异常不用惊慌,我们可以慢慢来解决
- 其次,分析异常,如内容中我们分析
NotSerializableException
一样分析。 - 针对异常若有好的解决方法,就立马解决,没有就立即寻找度娘寻找帮助
- 针对度娘上面给出的内容作出一定的鉴别,有些方法不一定能很好的解决当下的问题,而且还可能会让问题变得复杂。
- 当问题解决之后,即各方面运行不出现异常的情况之下,及时总结出现异常的情况,以防下一回出现类型的情况不能立马解决带来的时间浪费。
end
谢谢您的阅读!