我有代码
private List<Field> subFields;
private Collection<Field> subFieldsCollection;
...
try {
if (subFields == null && subFieldsCollection != null && !subFieldsCollection.isEmpty()) {
subFields = new ArrayList<>();
subFields.addAll(subFieldsCollection);
}
} catch (IllegalStateException e) {
...
}
我在想如何会出现抛出IllegalStateException
的情况。显然,我的应用程序的用户遇到了这个问题,但我无法追踪出错的原因。
Collection.addAll()
的文档中说:
IllegalArgumentException - 如果由于插入限制,不能立即添加所有元素
但是插入限制是什么?
我猜这取决于集合的确切类型。我正在使用ArrayList,所以让我们查看List
接口的addAll()
文档:
IllegalArgumentException - 如果指定集合的某个元素属性阻止将其添加到此列表中,则为true
好吧,哪些元素属性可能会阻止元素被添加到列表中呢?我的两个集合都是相同类型的,我应该能够添加null值..
有人能向我解释一下吗?
addAll()
方法中从未直接抛出该异常,除非访问了Collection
。您是否查看了堆栈跟踪并确定了异常抛出的位置? - Persixty