2012-11-02 54 views
0

在下面的方法中,我需要处理,如果null传入但我不确定如何。我如何处理这个问题,这样这个方法将通过JUnit测试?如何正确处理这些异常?

 public Album(String name) { 

    if(name==null){ 

     // what do I do here? 
    } 
    this.name = name; 
    this.images = new ArrayList<Image>(); 


    } 

而且在这个方法中,我该如何处理如果传入的索引或者比它从获取数组列表的大小负或更高?

public Image getImage(int index) { 
    if (index < 0 || index > images.size()) { 

      // how to handle here? 

    } 
     return images.get(index); 

} 

我已经尝试了两种方法的各种情况,但是这些方法不能保证它们的JUnit测试失败。感谢您提供给我的任何输入。

+0

你提到你已经尝试过“各种各样的事情”,你试过的是什么? – cobaco

+0

我抛出了例外,但我的一个小组成员说我应该处理它,而不是抛弃它。我尝试将名称和索引设置为默认值,但之后他们没有通过我的JUnit测试 – user1795374

回答

0
if(name==null){ 
    throw new IllegalArgumentException("name"); 
} 

虽然我个人没有看到直接抛NullPointerException有什么不妥。

if (index < 0 || index > images.size()) { 
    throw new ArrayIndexOutOfBounds(index); 
} 

但你知道吗? images.get(index)也会抛出它,所以不要打扰先检查它。阅读和测试的代码较少。事实上你已经犯了一个错误。您的先决条件将使index等于images.size()。应该有index >= images.size()

+0

我扔了它们,但是我的一个组员说我不应该抛出它,我应该处理它。 – user1795374

+0

@ user1795374:当然,那么你如何处理它们?使用空字符串而不是'null'名字?也许。如果超出边界,从数组中取第一个(last?)元素?不太可能......不管你做什么取决于你的要求。你的小组成员必须更具体。 –

+0

由于某种原因,我说的时候, if(name == null){name =“”; } 我的JUnit测试没有通过 – user1795374