É 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