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