Testando Exceções

4 respostas
J

Opa…
Gostaria de saber como eu faço pra saber qual foi a exceção que foi levantada quando eu uso uma superclasse dessa exceção.
Ex.

try{ //levanta exceção }
catch( IOException e ){}

Como eu fico sabendo que foi um FileNotFoundException ?

Obrigado, estou estudando exceções agora e me veio isso na cabeça.

4 Respostas

cariocathi

faça um catch pra cada tipo d exception ao invés d usar uma exception genérica

danieldestro

Sempre da mais específica para a mais genérica:

try{ //levanta exceção }
catch( FileNotFoundException e ){}
catch( IOException e ){}
catch( Exception e ){}
J

Isso eu sabia… mas eu gostaria de saber se tem alguma maneira de descobrir dentro de uma superclasse de uma exception a sua subclasse, ou seja, se em um IOException foi um FileNotFoundException ou um EOFException sacaram ?!

danieldestro
if( exc instanceof ClasseQueVoceQuerTestar ) { }
try {
  throw new IOException();
}
cacth( Throwable t ) {
  if( t instanceof IOException ) {}
  if( t instanceof Exception ) {}
  if( t instanceof Throwable ) {}
}
Criado 2 de dezembro de 2003
Ultima resposta 2 de dez. de 2003
Respostas 4
Participantes 3