Переопределение метода в Java, генерирующее исключения

Я пытаюсь понять Приведение объектов и переопределение методов.

У меня есть кусок кода:

    public class ExceptionClass{
        void m() throws SQLException{}

    }

    class A extends ExceptionClass{

        void m() throws Exception{}
    }

Это приводит к ошибке «Исключение Исключение не совместимо с предложением throws в ExceptionClass.m ()».

То же самое, если я напишу как:

    public class ExceptionClass{
        void m() throws SQLException{}
    }

    class A extends ExceptionClass{

        void m() throws RuntimeException{}
    }

Это не дает никакой ошибки, и метод также корректно переопределен. После некоторого анализа я подумал, что это может быть, поскольку SQLException выходит за пределы класса Exception, поэтому мы не можем заменить «SQLException». с & quot; Исключением & quot; в подклассе (мы меняем сигнатуру переопределенного метода).

Но потом я сделал это:

    public class ExceptionClass{
        void m() throws NullPointerException{}
    }

    class A extends ExceptionClass{
        void m() throws RuntimeException{}  
    }

Но здесь нет ошибок ..! Я думал, что это должно дать ту же ошибку из-за причины, которую я упомянул выше.

Я не уверен, почему он так себя ведет. Также, каковы правила, которым нужно следовать, когда мы переопределяем методы, которые генерируют исключения в сигнатуре метода.

Ответы на вопрос(3)

Ваш ответ на вопрос