抛出异常并继续接收数据

时间:2018-06-10 04:07:16

标签: java

在我目前正在处理的一段代码中,我将从用户那里获取要添加到对象的ArrayList数据。我正在检查ArrayList中每个项目对照该对象的该类型数据的当前列表,以确保它不在列表中。

有没有办法为传入列表中的一个项目抛出异常,告诉用户它已经在列表中 - 然后继续前进并添加传入的下一个项目列出我目前的名单,如果他们还没有?

2 个答案:

答案 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)抛出异常。