具有true/false结果的Java一线异常处理

ruf*_*ang 1 java syntax

boolean pingOK = false;
try {
  pingOK = InetAddress.getByName(ip).isReachable(200);
} catch(IOException e) {
  pingOK = false;
}
Run Code Online (Sandbox Code Playgroud)

这些代码可以从6行减少到1行吗?

如:

boolean pingOK = withNoException(InetAddress.getByName(ip).isReachable(200));
Run Code Online (Sandbox Code Playgroud)

也许Java 8以上的一些功能异常技巧?

或者在Java 7下有一些方法可以做到这一点吗?

shm*_*sel 5

你可以自己做帮助:

static <T> T withNoException(Supplier<? extends T> supplier, T defaultValue) {
    try {
        return supplier.get();
    } catch (Exception e) {
        return defaultValue;
    }
}

...

boolean pingOK = withNoException(() -> InetAddress.getByName(ip).isReachable(200), false);
Run Code Online (Sandbox Code Playgroud)