Duvida sobre funcionamento de exceções

Bom dia galera, poderiam me explicar o pq de ser obrigatório um método abstrato explicitar uma exceção para sua sobrescrita poder lançar também? e pq se a sobrescrita desse método não lançar exceção, ele não precisa dessa explecitação?
Obrigado.

Você está invertendo.
Veja bem, suponha a classe abstrata abaixo

public abstract class FileUtil {
    public String readContent();
    public void loadFile() throws IOException;
}

A classe acima possui dois métodos: readContent e loadFile.
O método readCointent não irá lançar nenhuma exceção, pois, entende-se que: ou o arquivo não foi lido ou ele foi. Se não foi lido, retornará nulo ou String vazia.
Se foi lido, então, retornará o conteúdo lido a partir do tal arquivo.
Óbvio que caberiam outras tratativas, mas, não vem ao caso.

Sobre o método loadFile, ele deverá indicar que uma falha pode ocorrer, por isso a definição do throws para IOException, que irá capturar desde um file not found até um problema com permissão de leitura do arquivo.

A partir daí, então, da definição dessa estrutura, é que se pensa em implementar. E, daí sim, se vocÊ não definiu o método como possível lançamento de exceção, então, ele não pede. Agora, se está sobrescrevendo um método que possui essa assinatura, então, deverá indicar isso.

1 curtida

Obrigado pela resposta! :3