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,

Другие вопросы по тегам