看到StreamCorruptedException抛出“原因”并指出“ 无效流头 ”,然后提供该无效流头的第一部分是相对常见的情况。 通常,确定异常原因的有用线索是了解无效流头是什么,因为这可以解释意外的原因并引起问题。
StreamCorruptedException只有两个构造函数, 一个不接受任何参数 , 一个接受单个描述异常原因的String 。 这告诉我们,“无效流头:XXXXXXXX”消息(其中XXXXXXXX表示各种无效的头详细信息)是由实例化(并可能抛出)这些StreamCorruptedException
的代码提供的,而不是由该异常类本身提供的。 这意味着在这些异常之一中,遇到的消息不一定总是相同的格式,但在大多数情况下,格式与“ invalid stream header:”无效,后跟该无效流头的第一部分。
通常由ObjectInputStream抛出此异常。 该类的Javadoc包含一些有用的详细信息,有助于解释为什么遇到“ StreamCorruptedException:invalid stream header ”。 类级别的Javadoc指出:“只能从流中读取支持java.io.Serializable或java.io.Externalizable接口的对象。” ObjectInputStream(InputStream)构造函数的Javadoc声明(我强调说 )