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 ...
Get Java Network Programming, Second Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.