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á!
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?
class AplicacaoException extends RuntimeException {
}
class BancoDeDadosException extends AplicacaoException {
}
class NegocioException extends AplicacaoException {
}
catch(AplicacaoException e)
catch(NegocioException e)
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( ){ };
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();
}
}
Espero ter ajudado...Bons estudos...
Le Java Reis! Valeu…
Entendi 