Как создать функцию исключения throw, чтобы ее родительская функция не выдавала никаких ошибок

#java #inheritance #error-handling #stack

#java #наследование #обработка ошибок #стек

Вопрос:

Я создаю стек фиксированного размера, при попытке вставить новый элемент, когда стек уже достиг предела, функция push должна выдавать исключение, чтобы уведомить о достижении предела, см. Код spinet ниже

 public class SizedStack<T> extends Stack<T> {
  private int maxSize;

  public SizedStack(int size) {
    super();
    this.maxSize = size;
  }

  @Override
  public T push(T object) throws Exception{ // error message for the exception throwing 
    //If the stack is too big, return an Exception 
    while (this.size() > maxSize) {
      throw new Exception("Stack Overflow");
    }
    return super.push(object);
  }
}
  

Проблемы: push функция из родительского stack класса не возвращает никаких исключений. Поэтому я получаю ошибку для своего кода.

 Exception is not compatible with throws clause in Stack<t>.push(T);
  

Как я могу решить эту проблему?

Комментарии:

1. Просто создайте исключение RuntimeException (или, скорее, подкласс)

2. Проблема push в том, что она наследуется от суперкласса Stack и не генерирует там исключение. Добавление проверяемого исключения к унаследованному методу является незаконным, поскольку оно нарушает полиморфизм. Вам нужно либо отказаться от наследования, либо создать непроверенное исключение