如何抛出 StackOverflowException

How to throw a StackOverflowException

我目前正在制作有界数组堆栈。此方法将大于存储容量的数组抛出到 WhosebugException,除了我不断收到“throws WhosebugException 部分

的错误消息
public void push(T item) throws WhosebugException {
    //push item onto the stack,
    if (isFull()) throw new WhosebugException();
    else {
        top++;
        storage[top] = item;
    }
}

错误信息:

Error:(52, 17) java: push(T) in com.ld.BoundedArrayStack cannot implement push(T) in com.ld.StackADT overridden method does not throw com.ld.WhosebugException

其他留言:

push(T) in com.Id.BoundedArrayStack clashes with push(T) in com.Id.StackADT; overridden method does not throw com.Id.WhosebugException

我不明白这是什么问题。

根据您的错误消息,您的超类 StackADT 定义 push 不抛出 WhosebugException,因此此方法的任何覆盖都不会抛出 WhosebugException

您可以:

  • 让你的WhosebugException成为RuntimeException,随时都可以扔。您不必在 throws 子句或
  • 中声明它
  • StackADT 中声明 push 方法,使其 throws 成为 WhosebugException.