You use the @serialData tag in the doc comment for a writeObject method to document any
additional data written by the method. You can also use @serialData to document anything written by an
Externalizable class's writeExternal method.
20.9. The IOException Classes
Every I/O-specific error detected by classes in java.io is signaled by an IOException or a subclass.
Most I/O classes are designed to be general, so most of the exceptions cannot be listed specifically. For
example, InputStream methods that throw IOException cannot detail which particular exceptions
might be thrown, because any particular input stream class might throw a subclass of IOException for
particular error conditions relevant to that stream. And the filter input and output streams pass through
exceptions only from their downstream objects, which can also be of other stream types.
The specific subclasses of IOException used in the java.io package are
CharConversionExceptionextends IOException
Thrown when a character conversion problem occurs in a character stream
operation that must convert local character codes to Unicode or vice versa.
EOFExceptionextends IOException
Thrown when the end of the file (stream) is detected while reading.
FileNotFoundExceptionextends IOException
Thrown when the attempt to access the file specified by a given pathname
failspresumably because the file does not exist.
InterruptedIOExceptionextends IOException
Thrown when a blocking I/O operation detects that the current thread has
been interrupted before or during the operation. In principle, except for the
Print stream methods, interrupting a thread should cause this exception if
the thread is performing a blocking I/O operation. In practice most
implementations only check for interruption before performing an operation
and do not respond to interruption during the operation (see page 515) so you
cannot rely on the ability to interrupt a blocked thread. This exception is also
used to signify that a time-out occurred during network I/O.
InvalidClassExceptionextends ObjectStreamException
Thrown when the serialization mechanism detects a problem with a class:
The serial version of the class does not match that read from the stream, the
class contains unknown data types, or the class does not have an accessible
no-arg constructor when needed.
InvalidObjectExceptionextends ObjectStreamException