1
resposta

[Sugestão] Hierarquia de classes em um bloco try-catch

O último parágrafo está contraditório, ao invés de dizer

"É possível capturar exceções de uma classe mãe em um bloco catch que captura exceções de uma classe filha."

O correto não seria justamente o seria justamente o contrário?, isto é,

Em um bloco catch que captura exceções de uma classe mãe, é possível capturar exceções de suas classes filhas.

E então assim, como dito na última frase, o inverso não será possível:

"se um bloco catch captura exceções de uma classe filha, ele não será capaz de capturar exceções de uma classe pai." (ou mãe, para continuar coeso)

1 resposta

Olá, Beatriz

Você está absolutamente correta em sua observação. A frase deveria ser:

"Em um bloco catch que captura exceções de uma classe mãe, é possível capturar exceções de suas classes filhas."

Aqui está um exemplo prático para ilustrar isso:

try {
    // Algum código que pode lançar exceções
} catch (Exception e) { // Exception é a "classe mãe"
    // Este bloco catch pode capturar qualquer exceção que seja uma instância de Exception ou de suas subclasses
} catch (IOException e) { // IOException é uma "classe filha" de Exception
    // Este bloco catch NÃO será executado, pois as exceções do tipo IOException já foram capturadas pelo bloco catch anterior
}

Neste exemplo, o bloco catch (IOException e) nunca será alcançado, pois todas as exceções do tipo IOException (e suas subclasses) já foram capturadas pelo bloco catch (Exception e).

Espero ter ajudado e bons estudos!