Как оставить отлов ошибки в подклассе?

public class First {
protected void method1() throws CustomException {
    int number=10/0;
    System.out.println("method 1" + number);
    throw new CustomException("Divided by zero");
}
public class Second extends First {
protected void method2() {
        method1();
    
}
public class Third extends Second {
protected void method3(){
    try {
        method2();
        }
        catch (CustomException ex)
        {
            System.out.println("Caught the exception");
            System.out.println(ex.getMessage());
        } 
}

В этом коде сначала выдается исключение, и я хочу поймать его с третьего (второй не будет обрабатывать ошибку). Но второй вызов метода не дает мне пройти. Как я могу это исправить?


person melisa    schedule 18.08.2020    source источник
comment
не вызывая метод из второго класса. Сделайте этот класс абстрактным и заставьте пользователя использовать дочерний класс   -  person Stultuske    schedule 18.08.2020
comment
Возможно, объясните больше, почему это вариант использования/реализация. Для этого ответа есть несколько решений, таких как удаление посредника, отказ от объявления CustomException в method1 и т. д.   -  person Gustavo Kawamoto    schedule 18.08.2020
comment
Я должен поймать третью и записать ее детали в файл. Но я не могу удалить второй. Потому что это своего рода домашнее задание.   -  person melisa    schedule 18.08.2020
comment
@Stultuske Извините, но я не понимаю, что вы имеете в виду   -  person melisa    schedule 18.08.2020
comment
если пользователю разрешено напрямую вызывать метод в родительском классе, нельзя сказать, что дочерний класс должен обрабатывать исключение. поэтому убедитесь, что публично видны только методы дочерних классов   -  person Stultuske    schedule 18.08.2020
comment
Возможный дубликат этого ответа, который объясняет это лучше, чем я. У меня сложилось впечатление, что проблема была не в подклассе :)   -  person Scratte    schedule 19.08.2020