Sobrescrita de métodos e exceções mais restritivas ou menos abrangentes

Boa tarde a todos!

Quanto a sobrescrita de métodos existe essa característica que quando um método sobrescreve um outro dado método ele não deve lançar exceções novas ou mais abrangentes.

Eu entendo que essa característica se da pois quando fizermos chamadas poliformicas a um método subscrito (através de chamada virtual, chamar um método de um subtipo através da referência de um super tipo) o subscritor deve garantir que caso sejam declaradas exceções estas devem coincidir com as do supertipo ou até opcionalmente não declarar nenhuma exceção pois ele não deve declarar nenhuma exceção que nunca vá realmente lançar.

O que eu não consigo entender a “semântica” é quanto a se as exceções sejam declaradas elas devem ser mais restritivas ou menos abrangentes no método que sobrescreve, pois quando alguém for utilizar aquele dado método através da API de um supertipo ele deverá colocar tal chamada entre um bloco try catch atendendo as exceções do mesmo (que podem ser subtipos das exceções declaradas no supertipo, ex: no supertipo declara throws Exception e no subtipo throws FileNotFoundException), pois caso o método do supertipo lance uma exceção (através da chamada virtual) que não esteja declarada no método do subtipo, ao colocar somente subtipos das exceções na declaração deixamos o método “desprotegido” (ex: no exemplo anterior o super tipo declarando Exception e o subtipo declarando FileNotFoundException, na chamada virtual o método do supertipo lança uma exceção SQLException e minha API do subtipo me obrigou apenas colocar FileNotFound no bloco try catch)

No fundo não tem muuuita utilidade essa dúvida porém eu gosto de entender o comportamento e isso é algo que me incomoda bastante não entender…

Grato desde já … aguardo respostas! 8)

Faz-se isso justamente para facilitar a vida de quem vai trabalhar com o subtipo diretamente. Sem falar que torna a interface do subtipo mais coesa e fácil de entender.

Numa API, vc fornece vários níveis de abstração, mas é o usuário da API que deve escolher em que “altura” trabalhar.