【问题标题】:Is it possible to catch an IndexOutofBounds as a boolean value?是否可以将 IndexOutofBounds 捕获为布尔值?
【发布时间】:2016-01-06 20:21:10
【问题描述】:

所以我不想避免 IndexOutofBounds 错误;但是,我想知道如何在不使程序崩溃的情况下知道何时点击它。

    List<String> pool = new ArrayList<>();
    pool.add("a"); 
    boolean checked = (pool.get(1) == null); //I know this doensn't work
    System.out.println(checked); //I want false

所以在这个例子中,很明显我的列表池的索引 1 中不存在任何内容。是否有可能为此获得布尔值?或者是否可以在不执行 i

【问题讨论】:

  • 你为什么不想检查list.size()

标签: java list boolean indexoutofboundsexception


【解决方案1】:

它被称为 try-catch 块:

boolean hasValue;
try {
    hasValue = (pool.get(i) != null);
} catch (IndexOutOfBoundsException e) {
    hasValue = false;
}
// hasValue == true if non-null value found at index i

但这是一个名为“exceptions as flow control”的anti-pattern

【讨论】:

    【解决方案2】:

    答案是否定的。您可以检查the docs 并看到除了检查大小之外没有办法“获取是否存在”或查找“是否存在索引”。

    尝试访问索引并捕获异常是可能的,但不推荐,因为catching exceptions is an expensive operation in java

    【讨论】:

      猜你喜欢
      • 2010-09-18
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多