On Thu, 14 Oct 2021 17:29:16 GMT, Daniel Jeliński <d...@openjdk.java.net> wrote:
> 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. I suspect most of these cases need a closer look as there may be cases that can never happen, meaning Error or InternalError would be more appropriate, e.g. if MultiByteToWideChar fails with ERROR_INVALID_FLAGS or ERROR_INVALID_PARAMETER for example. ------------- PR: https://git.openjdk.java.net/jdk/pull/5956