IndexOutOfBoundsException

IndexOutOfBoundsException

Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        6年前关闭。
                    
                
        

我最近找到了一个列表长度为0但在位置1进行访问尝试的错误

System.out.println("key is " + keyValuesPairs.get(0)+ " , value is " + keyValuesPairs.get(1));


这导致了IndexOutOfBoundsException,但由于未捕获到该异常,因此该异常被静默删除,并且没有任何迹象表明抛出了异常。由于这个原因,IndexOutOfBoundsException应该成为检查异常,因为它可能导致难以发现错误?

更新:异常不会被静默删除。

最佳答案

您的问题不是我应该捕获此异常吗?这就是为什么未报告消耗此异常的原因?

代码中确实存在一个错误,但是另一个错误-隐藏的一个正在悄悄地使用您的异常并将其丢弃的错误-是一个更加有害的错误。

这就是为什么

...
} catch (Exception e) {
  // Ignore it.
}


几乎总是有代码气味。

10-05 22:39