java - 如何抛出 StackOverflowException

标签 java arrays try-catch overriding

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

”的错误消息
public void push(T item) throws StackOverflowException {
    //push item onto the stack,
    if (isFull()) throw new StackOverflowException();
    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.StackOverflowException

其他信息:

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

我不明白这是什么问题。

最佳答案

根据您的错误消息,您的父类(super class) StackADT 定义了 push 不抛出 StackOverflowException,因此此方法的任何覆盖都不会抛出 StackOverflowException 要么。

您可以:

  • 将您的StackOverflowException 设为RuntimeException,它可以随时抛出。您不必在 throws 子句或
  • 中声明它
  • StackADT 中声明 push 方法,以便它throw StackOverflowException

关于java - 如何抛出 StackOverflowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33577941/

相关文章:

java - 运行一个在 windows 和 Linux 平台上运行的 Java 开发的 web 项目

python - 从 numpy 图像中提取彩色线

java - 为什么我在 Java 中收到未报告的异常错误

java - 用Java计算 'center of an array'

java - 尝试使用资源引入无法访问的字节码

c++ - 抛出的对象分配在哪里?

java - 为什么我们在连接数据库时使用 Class.forName (“oracle.jdbc.driver.OracleDriver” )?

java - 您使用过或见过的最好的 toString 构建器类是什么?是什么让它变得美好

java - 在什么情况下会发生这种奇怪的 jpa 行为?

arrays - Julia:mapslices() 所映射的函数有多个输入参数?