有条件地抛出异常

时间:2016-03-20 13:49:25

标签: java exception-handling

如何确保在第一次检查条件为1时不会抛出异常,并允许检查所有条件,然后抛出与“已添加数量”的第一个条件相关的异常。

class Hello
{
 List<Integer> newExample=new Arraylist<Integer>();
 List<Integer> example=new Arraylist<Integer>();
 example.add(1);
 example.add(2);
 example.add(3);
 public void addExample()
 {
  for(Integer ex: example)
   {
    pl.adding(ex);
   }
 }
 public void adding(Integer example)
 {
   if(example==1)//some work around so that rest of list of example (2,3) get chance to execute.
     { 
       throw new NumberAlreadyAddedException("Number is already added")
     }
   newExample.add(example);
 }
} 

1 个答案:

答案 0 :(得分:0)

我相信在你的情况下,你应该在接收/添加值到列表的时间点检查重复输入。我稍微修改了您的代码,以便在您要将值添加到List中时检查重复项,如果发现该值是重复的,则立即抛出错误:

import java.util.*;

class Hello{

    List<Example> exam = new ArrayList<Example>();

    public void execute() throws Exception{
      add(1);
      add(2);
      add(3);
      add(1);

      for(Example ex:exam){
          test(ex)
      }
    }

    public void add(Integer value) throws IllegalArgumentException{
        if(exam.contains(value)){
          throw new IllegalArgumentException("Number is already added.");
        }
        exam.add(value);

    }

    public void test(Example example){
        System.out.println("Running test on Example: " + example);//pl.test(ex);
    }

    public static void main(String[] args){
      Hello hello = new Hello();
      hello.add(1);
      hello.add(2);
      hello.add(3);
      hello.add(1);
    }
}

class Example{}