所有由序列化类抛出的异常都是ObjectStreamException的子类,它是IOException的子类。
ObjectStreamException
所有序列化异常的超类。
InvalidClassException
当一个类由于以下任何原因而无法用于恢复对象时抛出:
- 该类与流中的类的序列化版本不匹配。
- 该类包含具有无效原始数据类型的字段。
Externalizable类没有公共无参构造函数。Serializable类无法访问其最接近的非Serializable超类的无参构造函数。
NotSerializableException
由readObject或writeObject方法抛出,用于终止序列化或反序列化。
StreamCorruptedException
在以下情况下抛出:
- 如果流头部无效。
- 未找到控制信息。
- 控制信息无效。
- JDK 1.1.5或更低版本尝试在
PROTOCOL_VERSION_2流上调用readExternal。
NotActiveException
如果以下ObjectOutputStream方法中的writeObject状态无效,则抛出:
defaultWriteObjectputFieldswriteFields
如果以下ObjectInputStream方法中的readObject状态无效,则抛出:
defaultReadObjectreadFieldsregisterValidation
InvalidObjectException
当无法使恢复的对象有效时抛出。
OptionalDataException
当readObject在流中有原始数据且期望对象时抛出。异常的长度字段指示当前块中可用的字节数。
WriteAbortedException
当读取由在写入流时发生异常而终止的流时抛出。