Sobes.tech
Back to questions
Junior
23

Можно ли в переопределённом методе clone() подписать throws Exception, учитывая что он @Override?

Companies where asked
ИП Ганус Александр Андреевич

Answer from AI

sobes.tech AI

В Java при переопределении метода clone(), который объявлен в классе Object с сигнатурой:

protected Object clone() throws CloneNotSupportedException

вы не можете расширить список проверяемых исключений (checked exceptions). То есть, если вы переопределяете этот метод, вы можете:

  • Не объявлять throws вовсе,
  • Или объявить throws CloneNotSupportedException или его подкласс,
  • Но не можете добавить throws Exception, так как это более общее исключение.

Если попытаться подписать throws Exception, компилятор выдаст ошибку, так как метод с аннотацией @Override должен строго соответствовать или сужать сигнатуру базового метода.

Пример правильного переопределения:

@Override
protected Object clone() throws CloneNotSupportedException {
    return super.clone();
}

Таким образом, подписывать throws Exception нельзя.