Usando Exception em catch

Posted . Visible to the public.

É comum termos de usar um try{} catch (Exception e){} para um tratamento adequado do que desejamos obter. E geralmente usamos a mensagem da exceção no log, através de usos como:
e.getMessage() [Java]
e.message [Groovy]

Mas é preciso reparar que nem sempre a Exception obtida em e é exatamente a exceção desejada. Em algumas situações é possível que seja obtida uma exceção da classe UndeclaredThrowableException a qual encapsula a exceção desejada, e portanto as chamadas acima não lhe trarão a verdadeira mensagem de exceção desejada, e lhe trarão apenas null.

Para obter a exceção encapsulada é necessário usar a chamada:
e.getCause()

E portanto acaba se tornando útil congelar um método genérico de obtenção de obtenção da mensagem da exceção, algo como:
e.message ?: e.getCause().message

Na ZeroGlosa esta execução foi congelada em uma propriedade dinâmica de nome "mensagem". Portanto para obter a verdadeira message de uma exceção sem se preocupar de tratar o tipo da exceção que será capturada, utilize:
e.mensagem

Bruno Vieira
Last edit
Posted by Bruno Vieira to ZeroGlosa (2012-08-22 18:07)