抛出自定义Java异常

时间:2012-10-26 02:08:47

标签: java exception data-structures linked-list

我正在为Java Data Structures类完成作业,我们必须使用链表实现从堆栈ADT构建程序。教授要求我们包含一个名为popTop()的方法,它弹出堆栈的顶部元素,如果堆栈为空则抛出“StackUnderflowException”。从我可以收集的内容来看,这是一个我们必须自己编写的异常类,我遇到了一些问题。如果有人能帮助我,我将非常感激。以下是我的一些代码:

private class StackUnderflowException extends RuntimeException {

    public StackUnderflowException() {
        super("Cannot pop the top, stack is empty");
    }
    public StackUnderflowException(String message) {
        super(message);
    }
}

这是我写的异常类,这是我到目前为止所写的popTop()方法的开头:

public T popTop() throws StackUnderflowException {
    if (sz <= 0) {
        throw new StackUnderflowException();
    }
}

我收到的错误表明StackUnderflowException不能成为RuntimeException的子类,是否有人可以对此有所了解?在方法中我遇到错误,说StackUnderflowException未定义。

2 个答案:

答案 0 :(得分:4)

您的构造函数是私有的,您应该扩展Exception,而不是RuntimeException

答案 1 :(得分:0)

您的代码有2个问题 1.您定制的Exception类是私有的 2.它扩展了运行时异常,它应该扩展超类Exception

您可以创建自定义例外,如下所示:

公共类StackUnderflowException扩展Exception {

private static final long serialVersionUID = 1L;

/**
 * Default constructor.
 */
public StackUnderflowException(){

}
/**
 * The constructor wraps the exception thrown in a method.
 * @param e the exception instance.
 */
public StackUnderflowException( Throwable e) 
{
    super(e);
}
/**
 * The constructor wraps the exception and the message thrown in a method.
 * @param msg the exception instance.
 * @param e the exception message.
 */
public StackUnderflowException(String msg, Throwable e) 
{
    super(msg, e);

}

/**
 * The constructor initializes the exception message.
 * @param msg the exception message 
 */
public StackUnderflowException(String msg) 
{
    super(msg);
}