manejo de excepciones en el método implementado

El siguiente código da un error verificado athrows Exception:

import java.io.IOException;

interface some {
    void ss99() throws IOException;
}

public class SQL2 implements some {
    @Override
    public void ss99 () throws Exception {}
// ...
}

mientras que el siguiente compila bien:

import java.io.IOException;

interface some {
    void ss99() throws IOException;
}

public class SQL2 implements some {
    @Override
    public void ss99 () throws NullPointerException {}
// ...
}

¿Sobre qué lógica está haciendo Java esto? ¿Alguna idea?

TIA

Respuestas a la pregunta(1)

Su respuesta a la pregunta