在我目前正在处理的一段代码中,我将从用户那里获取要添加到对象的ArrayList
数据。我正在检查ArrayList
中每个项目对照该对象的该类型数据的当前列表,以确保它不在列表中。
有没有办法为传入列表中的一个项目抛出异常,告诉用户它已经在列表中 - 然后继续前进并添加传入的下一个项目列出我目前的名单,如果他们还没有?
答案 0 :(得分:1)
更新:我通过使用try / catch包围该代码块来解决问题。这是我的代码澄清:
public void addCategories(ArrayList<BookCategory>categories) {
boolean exists;
for(int index = 0; index <categories.size(); index++) {//iterate through passed array list
try {
//for each element, check if it exists in the current category list.
exists = checkBookCategory(categories.get(index));
if (exists == false)
{subjectCategories.add(categories.get(index));}
else {
throw new IllegalArgumentException("Item " + categories.get(index) + " already in list."); }
}catch(IllegalArgumentException ie) {
System.out.println(ie);
} }
}
谢谢@JimGarrison!
答案 1 :(得分:0)
简短的回答是,你可以这样做,但通常非常气馁。
一些样本伪代码:
for (Item i : inputList)
{
try
{
myObject.addItem(i);
}
catch (MyCustomDuplicateItemException ex)
{
// Tell the user there was a duplicate
}
}
但是,这是使用流量控制的例外。理想情况下,如果项目成功添加,您可以编写addItem()
方法返回布尔值(即true
),如果项目是重复项,则会返回另一个值(false
)抛出异常。