Classe para trabalhar exception

Olá galera, estou com uma dúvida, gostaria de criar uma classe que ela trabalhasse com exceptions recebidas, por exemplo, a classe testaNúmeros manda um erro de número inválido para essa classe e ela identifica que a exception foi de número inválido e solta “Número inválido”, não sei se fui claro, mas resumindo, uma classe que recebe uma “Exception” e verifica se ela é de sql, numero, arrayoutofbounds, etc

Você pretende criar uma classe generalista pra identificar qual o tipo de exception foi lançada? É isso mesmo?

Não tenho grandes experiências com tratamento de exceções, mas posso te adiantar que trabalhar exceções de forma generalista é a pior coisa que você pode fazer. A exceção a ser lançada tem de ser a mais próxima possível do real erro, e você tem que estudar sua implementação e concluir quais exceções seu código pode vir a lançar…

O que pode ser feito no seu caso, é criar suas próprias exceções, extendendo as devidas classes da classe Throwable. Nada que uma busca rápida no Google não te ajude.

Se esse não for o seu caso, aguarde a visita de outros users…

:wink:

Pelo que entendi, você deseja um gerenciador de exceções?

Você poderia criar uma classe desse tipo:

public class GerenciadorExcecao {
   private String mensagemErro;
   public void getExcecao(Exception e) {
      if (e instanceof SQLException)
         mensagemErro = "Erro de SQL";
      if (e instanceof NumberFormatException)
         mensagemErro = "Erro de formatação de números";
      // ....
      if (e instanceof Exception)
         mensagemErro = "Exceção genérica";
   }

   public String getMensagem() {
      return mensagemErro;
   }
}

O exemplo é bem simples, mas talvez possa ajudar em algo.

Reforço as dicas do colega Ruttmann sobre generalizar exceções, principalmente por dois motivos:

1 - Todas as exceções são filhas de Exception, logo esse deve ser declarado sempre em último caso numa instrução try/catch;
2 - Existem dois tipos de exceções, em tempo de compilação e em tempo de execução;

Interessante estudar esses casos antes de implementar uma solução que possa te complicar a vida mais pra frente, porém como no exemplo acima, jeito de fazer existe usando a palavra chave instanceof para descobrir a instância da Exceção passada.

Espero ter ajudado.

[quote=explosive_spirit]Pelo que entendi, você deseja um gerenciador de exceções?

Você poderia criar uma classe desse tipo:

public class GerenciadorExcecao {
   private String mensagemErro;
   public void getExcecao(Exception e) {
      if (e instanceof SQLException)
         mensagemErro = "Erro de SQL";
      if (e instanceof NumberFormatException)
         mensagemErro = "Erro de formatação de números";
      // ....
      if (e instanceof Exception)
         mensagemErro = "Exceção genérica";
   }

   public String getMensagem() {
      return mensagemErro;
   }
}

O exemplo é bem simples, mas talvez possa ajudar em algo.

Reforço as dicas do colega Ruttmann sobre generalizar exceções, principalmente por dois motivos:

1 - Todas as exceções são filhas de Exception, logo esse deve ser declarado sempre em último caso numa instrução try/catch;
2 - Existem dois tipos de exceções, em tempo de compilação e em tempo de execução;

Interessante estudar esses casos antes de implementar uma solução que possa te complicar a vida mais pra frente, porém como no exemplo acima, jeito de fazer existe usando a palavra chave instanceof para descobrir a instância da Exceção passada.

Espero ter ajudado.[/quote]
Seria mais ou menos isso, eu queria que eles recebesse uma Exception e verificasse se fosse exception de sql, soltasse na tela que era erro no banco de dados, se for de número, erro de número, não sei explicar muito bem isso, mas em resumo é isso que você fez, obrigado