boolean pingOK = false;
try {
pingOK = InetAddress.getByName(ip).isReachable(200);
} catch(IOException e) {
pingOK = false;
}
这些代码可以从 6 行减少到 1 行吗?
如:
boolean pingOK = withNoException(InetAddress.getByName(ip).isReachable(200));
也许在 Java 8 之上有一些功能异常技巧?
或者在 Java 7 下有什么方法可以做到这一点?
最佳答案
您可以创建自己的助手来执行此操作:
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);
关于带有 true/false 结果的 Java 单行异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316695/