Überschreibende Methode in Java, die Ausnahmen auslöst

Ich versuche, Object Casting und Method Overriding zu verstehen.

Ich habe einen Code:

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

    }

    class A extends ExceptionClass{

        void m() throws Exception{}
    }

Dies gibt einen Fehler "Ausnahme Ausnahme ist nicht mit der throws-Klausel in ExceptionClass.m () kompatibel".

Das gleiche wenn ich schreibe als:

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

    class A extends ExceptionClass{

        void m() throws RuntimeException{}
    }

Dies gibt keinen Fehler und die Methode wird auch korrekt überschrieben. Nach einigen Analysen dachte ich, dass dies der Fall sein könnte, da SQLException von der Exception-Klasse ausgeht, können wir "SQLException" in der Unterklasse nicht durch "Exception" ersetzen (wir ändern die Signatur der überschriebenen Methode).

Aber dann habe ich das gemacht:

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

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

Aber hier liegt kein Fehler vor ..! Ich dachte, es sollte den gleichen Fehler aus dem oben genannten Grund geben.

Ich bin mir nicht sicher, warum es sich so verhält. Welche Regeln sind zu beachten, wenn wir Methoden überschreiben, die Ausnahmen in der Methodensignatur auslösen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage