There seems to be only a couple of places where IOException (specifically) is thrown in the networking code and it can't occur in this code path as far as I can see. Perhaps that wasn't always the case, which could explain why the unusual construction exists.
So, the simplification suggested below seems reasonable.

- Michael.

On 21/07/11 23:54, Brad Wetmore wrote:
Kurchi,

Please have an additional reviewer for the networking portion of this, but in doing a quick look, I believe the point of the two catches is to make sure that any IOException that isn't already a SocketException (SocketException is a subclass of IOException) is rebranded to SocketException.

If these internal methods are guaranteed to only throw SocketExeptions (and it looks like it), then you can simplify this code to:

    public DatagramSocket() throws SocketException {
         createImpl();
         bind(new InetSocketAddress(0));
    }

bind throws SocketException, InetSocketAddress(int) only throws a IAE (a RuntimeException).

Brad




On 7/21/2011 3:05 PM, Kurchi Hazra wrote:
Hi,

Due to a recent update in javac to issue a warning on detecting
unreachable code, the following warning started showing up in the jdk
networking code:
../../../src/share/classes/java/net/DatagramSocket.java:183: warning:
unreachable catch clause.

This fix aims at removing this warning by removing the IOException. On
inspection, it was found that currently, the native code does not throw
any IOException.

The fix involves updates in:
jdk/src/share/classes/java/net/DatagramSocket.java


Webrev: http://cr.openjdk.java.net/~chegar/7035556/webrev.00/

Thanks,
-Kurchi

Reply via email to