Eu estou tentando fazer o exercício do deitel - 11.17 e não sei se fiz corretamente, gostaria que vocês me falassem se eu fiz certo ou não ou se tenho que trocar algo.
O enunciado: Capturando exceções com superclasses: 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]
Resultado no CMD:
Superclasse ExcecaoA.
Metodo lancaExcecaoB
Metodo lancaExcecaoC[/b]
Esse negócio de exceções achei bem complicado ¬¬