Исключения при наследовании
Существует два правила для контролируемых исключений при наследовании:
- Переопределяемый метод в подклассе не может выбрасывать контролируемые исключения, которые выше по иерархии чем исключения в методе супер класса.
- Конструктор подкласса должен включить в свой блок throws все классы исключений или их супер классы из блока throws конструктора супер класса, к которому он обращается при создании объекта.
Пример 1. Исключения при наследовании
import java.io.IOException;
public class SuperClass {
public SuperClass() throws IOException {
}
public void start() throws IOException {
}
}
import java.io.FileNotFoundException;
import java.io.IOException;
public class SubClass extends SuperClass {
public SubClass() throws IOException, ArithmeticException {
}
public void start() throws FileNotFoundException {
}
}
Если в конструкторе будет выброшено исключение, объект создан не будет.
Пример 2. Исключение в конструкторе
public class ConstructorException {
private int i;
public ConstructorException(int i) {
this.i = 20 / i;
}
public int getI() {
return i;
}
}
public class ExceptionInConstructorExample {
public static void main(String[] args) {
ConstructorException p = null;
try {
p = new ConstructorException(0);
} catch (ArithmeticException e) {
System.out.println("Гасим исключение конструктора.");
}
System.out.println(p.getI());
}
}
Курс 'Java для начинающих' на Udemy
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.