Исключения при наследовании
Существует два правила для контролируемых исключений при наследовании:
- Переопределяемый метод в подклассе не может выбрасывать контролируемые исключения, которые выше по иерархии чем исключения в методе супер класса.
- Конструктор подкласса должен включить в свой блок 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
             Курс 'Java для начинающих' на Udemy
         
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.