Socket Exceptions
In Java 1.0, a problem with a socket
method is likely to throw a
java.net.SocketException, which is a subclass of
IOException:
public class SocketException extends IOException
Indeed, even in Java 1.1 and later, many methods are declared to
throw only SocketException or even
IOException rather than the more specific
subclasses. However, knowing that a problem occurred is often not
sufficient to deal with the problem. Did the remote host refuse the
connection because it was busy? Did the remote host refuse the
connection because no service was listening on the port? Did the
connection attempt timeout because of network congestion or because
the host was down? Java 1.1 added three new subclasses of
SocketException that provide more information
about what went wrong: BindException,
ConnectException, and
NoRouteToHostException:
public class BindException extends SocketException public class ConnectException extends SocketException public class NoRouteToHostException extends SocketException
A BindException is thrown if you try to construct
a Socket or ServerSocket object
on a local port that is in use or that you do not have sufficient
privileges to use. A ConnectException is thrown
when a connection is refused at the remote host, which usually
happens because the host is busy or no process is listening on that
port. Finally, a NoRouteToHostException indicates
that the connection has timed out.
Code that you write in Java 1.0 should catch
SocketException and
IOException ...