Fabio's blog

“I like nonsense, it wakes up the brain cells. Fantasy is a necessary ingredient in living, it’s a way of looking at life through the wrong end of a telescope. Which is what I do, and that enables you to laugh at life’s realities.” - Dr. Seuss

Tratando Exceções não capturadas

As vezes temos que tratar exceções que foram geradas dentro do fluxo de eventos do framework mas sem quebrar a separação dos layers de apresentação e de domínio.

Um exemplo desta situação ocorre no beansbinding que se levantarmos uma exception em um objeto do domínio ela não vai ser exibida para o usuário.

Uma solução é usar o Thread.setDefaultUncaughtExceptionHandler, um exemplo:

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
  public void uncaughtException(Thread t, Throwable e) {
     JOptionPane.showMessageDialog(null, "Erro");
  }
});

Activity

2 total comments, leave your comment or trackback.
  1. Thales
    Nov 18th 2009

    Boa noite Fabio

    estive procurando como capturar as exceptions lançandas sobre o Beansbinding e encontrei o seu blog.
    Mas ao terar o que você sugere, não funcionou. Coloquei o seu código no início do meu frame de menu e não funcionou, fiz algo errado?

    desde já agradeço

  2. Fabio Almeida
    Nov 30th 2009

    Pode ser que você esteja na realidade com uma exception sendo tratada em um bloco vazio:

    try {
    foo();
    } catch (…) {
    //um dia quem sabe!
    }

    Ou, não esteja usando a thread correta.

    Parafraseando um personagem de novela: “Depurar componentes com arquitetura orientado a evento é a treva.”


Leave a Reply


Search

The archives run deep. Feel free to search older content using topic keywords.