Dúvida sobre exceções

8 respostas
B

Pessoal, surgiu uma outra dúvida no livro da Kathy , que está na Pág. 83(na Implementação de interfaces):

“Pode declarar exceções de tempo de execução em qualquer implementação de método da interface, independente do que constar na declaração da interface”.

Qual seria a diferença entre “exceções de tempo de execução” e exceções normais? Porque no livro é citado que não podemos declarar exceções mais abrangentes nos métodos de implementação do que as declaradas no método da interface.

Pelo que eu entendo de exceção seria : throws , catch… , estou certo?

Se alguém souber de algum link que esclareça melhor pra mim sobre exceções e suas diferenças, poste pra mim por favor.

Obrigado ,

Raphael C.

8 Respostas

M

existe Exception e RuntimeException, as de runtime são aquelas q tu pode lançar e não precisar de um catch pra capturálas, por ex, NullPointerException é uma

B

mas a NullpointerException dá alguma saída caso ocorra algum erro?

M

não entendi tua pergunta, tu ta te referindo a classe Error?

S
"bigwaves":
mas a NullpointerException dá alguma saída caso ocorra algum erro?
Se for lançada, dá sim. Por exemplo:
import java.util.ArrayList;
class Teste
{
   static ArrayList a;

   public static void main(String args[])
   {
      a.add(new Integer(6));
   }
}
Imprime NullPointerException, a pilha e a linha em que houve a exceção. Outro exemplo:
String a = "ae";
System.out.println(ae.charAt(2)); // 0 a 1
StringIndexOutOfBoundException
B

valeu, já aconteceu isso comigo várias vezes(ultrapassar o tamanho do array) , mas não associei isso com o nome NullPointerException, não parei pra pensar e passou despercebido, valeu pelas explicações.

matheus,a minha última dúvida era essa que o Schuenemann postou.

Obrigado galera.

W

E aew bigwaves!

Quando vc acessa um índice fora do tamanho de um array ele lança um ArrayIndexOutOfBoundsException.

Quando vc acessa uma referencia a um objeto não inicializado ele lança um NullPointerException.

Existem exceções:

não verificadas -> herdam direta ou indiretamente de RuntimeException, e não precisam ser capturadas ou declaradas.

verificadas -> herdam direta ou indiretamente de Exception, mas não de RuntimeException. Precisam ser capturadas para que o compilador pare de encher o saco hehe

Espero ter ajudado! abraço!

S

É, acho que você não entendeu direito cara.
A exceção aconteceu porque chamei o método add() sem ter um objeto ArrayList (repare que não foi instanciado um ArrayList, logo “a” tem o valor null).
Tentativa de chamar add() em null: NullPointerException.
O do índice da String é um exemplo de outra exceção. :wink:

B

valeu galera, deu pra entender as explicações, obrigado.

Criado 18 de abril de 2005
Ultima resposta 25 de abr. de 2005
Respostas 8
Participantes 4