Estou com dúvida em um exercício sobre exceções de programação orientada a objetos na linguagem Java. Fiz um código aqui, mas não sei está certo. Se estiver incorreto, gostaria que falassem o que eu tenho que alterar.
Enunciado: Utilize herança para criar uma superclasse de exceção (chamada ExceptionA) e subclasses de exceção ExceptionB e ExceptionC, em que ExceptionB herda de ExceptionA e ExceptionB herda de ExceptionB. Escreva um programa para demonstrar que o bloco catch para o tipo ExceptionA captura exeções de tipos ExceptionB e ExceptionC.
Classe ExcecaoA
public class ExcecaoA
{
public static void lancaExcecao() throws Exception
{
try
{
System.out.println( "Superclasse ExcecaoA." );
ExcecaoB.lancaExcecaoB();
}
catch( Exception exception ) // não executa
{
System.err.println( "Captura ExcecacoB e ExcecaoC" );
}
}
}
Classe ExcecaoB
public class ExcecaoB extends ExcecaoA
{
public static void lancaExcecaoB() throws Exception
{
try
{
System.out.println( "Metodo lancaExcecaoB" );
ExcecaoC.lancaExcecaoC();
}
catch( Exception exception ) // não executa
{
System.err.println( "" );
}
}
}
Classe ExcecaoC
public class ExcecaoC extends ExcecaoB
{
public static void lancaExcecaoC() throws Exception
{
try
{
System.out.println( "Metodo lancaExcecaoC" );
throw new Exception();
}
catch( Exception exception ) // não executa
{
System.err.println( "" );
}
}
}
Classe CapturaExcecoes( Programa )
public class CapturandoExcecoes
{
public static void main( String[] args )
{
try
{
ExcecaoA.lancaExcecao();
}
catch( Exception exception )
{
System.err.println( "Metodo Main captura excecao de ExcecaoA" );
}
}
}
[b]
Saída no CMD:
Superclasse ExcecaoA.
Metodo lancaExcecaoB
Metodo lancaExcecaoC