带有 true/false 结果的 Java 单行异常处理

标签 java syntax

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/

相关文章:

java - 连续接收来自 Activemq 的消息

algorithm - 微语法分析器的递归方法

java - 编译器不断吐出 "Class Interface or Enum Expected"谁能发现我做错了什么?

java - 具有零编辑距离的基于字典的命名实体识别 : LingPipe, Lucene 或什么?

java - 我如何获取我点击的卡片 View 的信息并将其发送到下一个 Activity

syntax - 基本 Racket 语法问题

javascript - JavaScript 库中的前导分号有什么作用?

php - MYSQL插入语法错误

java - 如何将具有透明背景的多色图像导入android studio?

java - 如何在饼图图例中仅包含每个类别的详细描述?