Java: ошибка сообщения об исключении
Использование BlueJ, и все еще новичок в Java. У меня возникают проблемы, когда я запускаю тест, он возвращается, сообщая, что "нет сообщения об исключении". Я не знаю, где просмотреть мой код, чтобы решить эту проблему. Итак, вот что у меня так далеко:
Основной класс
public class LList<X>
{
private Node<X> head;
private int length = 0;
public int size()
{
return length;
}
public void add(X item)
{
Node a = new Node();
a.setValue(item);
a.setLink(head);
head = a;
length ++;
}
public X get(int index)
{
X holder = null;
Node<X> h = head;
if(index > length)
{
throw new IndexOutOfBoundsException();
}
else
{
for(int i = 0; i < index + 1; i++)
{
h = h.getLink();
holder = h.getValue();
}
return holder;
}
}
}
Следующий урок
public class Node<X>
{
private X value;
private Node link;
public X getValue()
{
return value;
}
public void setValue(X v)
{
value = v;
}
public void setLink(Node l)
{
link = l;
}
public Node getLink()
{
return link;
}
}
Тестовый класс
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class LListTest
@Test
public void testGet()
{
LList x = new <String>LList();
x.add("hi");
assertEquals("hi", x.get(0));
x.add("1hi");
assertEquals("hi", x.get(1));
assertEquals("1hi", x.get(0));
x.add("2hi");
assertEquals("hi", x.get(2));
assertEquals("1hi", x.get(1));
assertEquals("2hi", x.get(0));
x.add("3hi");
assertEquals("hi", x.get(3));
assertEquals("1hi", x.get(2));
assertEquals("2hi", x.get(1));
assertEquals("3hi", x.get(0));
x.add("4hi");
assertEquals("hi", x.get(4));
assertEquals("1hi", x.get(3));
assertEquals("2hi", x.get(2));
assertEquals("3hi", x.get(1));
assertEquals("4hi", x.get(0));
}
Если есть какие-либо идеи, я бы очень признателен, будь то объяснение, где в моем коде лежит проблема, или объяснение того, почему я получаю ошибку, было бы здорово.
1 ответ
Когда вы пытаетесь получить доступ к неверному индексу, вы генерируете исключение:
throw new IndexOutOfBoundsException();
без какого-либо сообщения. Таким образом, сообщение об исключении, заключенное в это будет null
, А потом следующее assertEquals()
вызов:
assertEquals("hi", x.get(4));
потерпит неудачу как, x.get(4)
сгенерирует исключение, но сообщение будет null
,