【问题标题】:Java in-one-line exception handling with true/false result具有真/假结果的 Java 单行异常处理
【发布时间】:2018-07-13 01:58:02
【问题描述】:
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 下有没有办法做到这一点?

【问题讨论】:

标签: java syntax


【解决方案1】:

你可以让自己的助手来做到这一点:

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);

【讨论】:

  • 这是简洁的代码,但请 OP 看看 jspcal 链接到的问题,尤其是这些部分:“你应该永远忽略异常。”和“我会严重怀疑任何测试代码的健全性”仅仅因为你可以,并不意味着你应该这样做。 stackoverflow.com/questions/28659462/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多