Exceção mais abrangente e menos abrangente

Bem pessoal estou estudando novamente sobrescrita de métodos!

Minha dúvida é! o que é um exceção mais abrangente e menos abrangente?

Está relacionado a hierarquia ?

Meus Agradecimentos desde já!

Isso, por exemplo:
A excessão Exception e mais abrangente do que SQLException.
Entendeu?

Assim como as classes ‘normais’, as exceções possuem herança. Por exemplo, uma FileNotFoundException extende IOException. Vc pode criar suas exceções baseadas em hierarquia também, tipo assim:

[code]class AplicacaoException extends RuntimeException {
}

class BancoDeDadosException extends AplicacaoException {
}

class NegocioException extends AplicacaoException {
}[/code]

Em um try/catch vc pode capturar os três tipos assim:

ou apenas um tipo especifico:

Outra observação é que exceções de Runtime NÂO precisa criar obrigatóriamente um bloco try/catch ou declarar no throws. NullPointerException vc não precisa criar um bloco try/catch, mas se for abrir um arquivo deverá tratar a exceção de IO ou subir a exceção através do throws.

Correto!

Então não posso lançar exceções que estejam acima da arvore de herança?

Exemplo:

class Father{
      public void execSQL(String sql)throws Exception{
      //code  
      }
}

class Child extends Father{
      @Override
      public void execSQL(String sql)throws SQLException{
      //code  
      }
}

JrRoberto, camarada…

A grande questão das exceções na sobrescrita… A regra é basica;
Se for sobrescrever o metodo que (declara/lança)throws IOException voce não pode throws Exception…pois a sobrescrita não vai permitir declarar um metodo mais abrangente pois o metodo sobrescrito não pode se arriscar mais do que o metodo original sendo assim quando se trata de sobrescrita se o metodo original declarar qualquer tipo de Exception o metodo sobrescrito deve declarar ou a mesma Exception, ou menos abrangente(mais especifica).A mesma regra segue para declaração das clausulas catch( ){ };

[code]
import java.io.FileNotFoundException;
import java.io.IOException;

class Teste {

public void getException() throws IOException{
	//throw new IOException();
}

}

class Teste2 extends Teste{

public void getException() throws FileNotFoundException{ // no caso se fosse throws Exception não compila
	//throw new FileNotFoundException();
}	

}[/code]

Espero ter ajudado…Bons estudos…

Le Java Reis! Valeu…

Entendi :slight_smile: