Per Java documentation, 
"[Error](https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/lang/Error.java#L30)
 [..] indicates serious problems that a reasonable application should not try 
to catch". Failure to enumerate network interfaces or addresses is not a 
serious enough situation; many applications can recover from this pretty easily.

All native methods (except `init()`) in 
[NetworkInterface](https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/net/NetworkInterface.java#L436)
 are declared with `throws SocketException`, so throwing SocketExceptions 
instead of Errors will match the declared interface.

Unix version of 
[NetworkInterface](https://github.com/openjdk/jdk/blob/master/src/java.base/unix/native/libnet/NetworkInterface.c#L1189)
 already throws `SocketException`s in similar situations, and does not throw 
`Error` under any circumstances.

I searched the bug database and mail archives, but could not find any 
discussion on the topic; if there's a reason to keep throwing `Error`s, I 
couldn't find it.

`tier1` tests pass, `java.net` tests pass. No new regression tests as I 
couldn't find any list of steps to reproduce the problem.

I don't have write access to JBS. I could use some help with creating a ticket.

-------------

Commit messages:
 - Throw SocketExceptions instead of Errors in NetworkInterface

Changes: https://git.openjdk.java.net/jdk/pull/5956/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=5956&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8275319
  Stats: 11 lines in 2 files changed: 0 ins; 0 del; 11 mod
  Patch: https://git.openjdk.java.net/jdk/pull/5956.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/5956/head:pull/5956

PR: https://git.openjdk.java.net/jdk/pull/5956

Reply via email to