Tratamento de Exceções

6 respostas
laelsonc

To querendo pegar um determinado tipo de Erro da maneira genérica, daí tentei:

try{
...
}catch(Exception ex){

   if(ex.equals("java.lang.NullPointerException")){
   sc.getRequestDispatcher("/home").forward(request,response);
   }else{
   out.print(ex);
   }


}

Não funciona. Alguém sabe como eu filtrar os erros dentro do catch "genérico".

Obs. Eu preciso dessa maneira, e não com vários catchs definindo cada erro.

6 Respostas

Guilherme_Gomes

Não sei por que você quer dessa maneira, mas…

try{
   ...
}catch(Exception e){
   if(e instanceof NullPointerException){
      ...
   } else {
      ...
   }
}
xjcd

Amigo o correto seria ter blocos catch para cada exception, mas como você quer assim, então teste isso:

if (ex.getClass() == NullPointerException.class) {
		//
	    }
ViniGodoy

Seguindo a sugestão do xjcd, não fica melhor assim?

try{ ... }catch(NullPointerException ex){ sc.getRequestDispatcher("/home").forward(request,response); } catch(Exception e) { out.print(ex); }

O ideal mesmo é não dar print em exceções. Se aconteceu um erro, é melhor trata-lo, nem que seja logando num lugar decente.

laelsonc

Muuuito bom.
Valeu !

dlt

Pois é, usar instanceof dentro de um try catch é considerdo má prática.
O melhor a fazer é colocar os vários try/catch’s em sequência, do mais específico pro menos específico.

fabim
<error-page>
    <exception-type>java.lang.NullPointerException<exception-type>
    <location>/home.jsp<location>
</error-page>

Isso vc define apenas uma vez no web.xml, e nao ira precisar replicar esse codigo pra cada pagina.
PS.: Apenas sugestao. Nao sei em que contexto vc esta capturando essa NPE.

Criado 8 de outubro de 2008
Ultima resposta 8 de out. de 2008
Respostas 6
Participantes 6