Java 即使在进行紧急检查后,也不会出现任何异常
Im使用Java中的LinkedList,并将其定义为:Java 即使在进行紧急检查后,也不会出现任何异常,java,exception,linked-list,queue,nosuchelementexception,Java,Exception,Linked List,Queue,Nosuchelementexception,Im使用Java中的LinkedList,并将其定义为: private final Queue<Collection<String>> data = new LinkedList<Collection<String>>(); 这在大多数情况下都很有效。但在一些罕见的未知场景下,它抛出了异常 java.util.NoSuchElementException 异常被抛出 data.remove(); 根据我的理解,如果在空队列上尝试删除,则会引
private final Queue<Collection<String>> data = new LinkedList<Collection<String>>();
这在大多数情况下都很有效。但在一些罕见的未知场景下,它抛出了异常
java.util.NoSuchElementException
异常被抛出
data.remove();
根据我的理解,如果在空队列上尝试删除,则会引发上述异常。
但在尝试删除之前,我已经检查了isEmpty。
那它为什么会抛出这样一个例外呢?
我看过很多类似的帖子,但都没有得到令人信服的答案。因为我已经在队列中进行了同步,所以我不明白发生这种情况的原因
非常感谢您的帮助。您能提供一个完整的、可重复的示例来说明此行为吗?但在某些罕见的未知场景下,它会引发异常。。。这是问题的一部分。为了解决问题,您需要确定引发异常的场景。您是否在代码中的其他位置修改列表?可能会使用synchronized?是的,当添加到列表中时,我不会对其进行同步。因此,也不要使用synchronized添加
data.remove();