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. Since all three of these new exceptions are subclasses of SocketException, that code should continue to work in Java 1.1. New code that you write in Java 1.1 and later can take advantage of these three subclasses to provide more informative error messages or to decide whether retrying the offending operation is likely to be successful.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.217.194.39