Olá,
Sou novato no Mentawai, e estou tentando configurar uma página para tratamento de exceções. Segui o tutorial do forum:
1) inclui um addGlobalFilter no meu ApplicationManager:
Code:
addGlobalFilter(new ExceptionFilter());
addGlobalConsequence(EXCEPTION, fwd("Error.jsp"));
2) criei a página Error.jsp
Code:
<body>
<h3>Mensagem de erro: </h3>
<p>Ocorreu um erro inesperado. Informe ao Web Master a situação em que ele ocorreu,
e os dados abaixo.</p>
<p>Excecção: <mtw:out value="exception"/></p>
<p>Mensagem: <mtw:out value="message"/></p>
<p>Pilha de execução: <mtw:out value="stacktrace"/></p>
</body>
3) simulei um erro (um nome de arquivo errado). O nome da exceção foi mostrado, a pilha de execução também, mas o mensagem, não. A classe da exceção é mostrada abaixo:
Code:
public class ExcecaoArquivoInvalido extends Exception {
public ExcecaoArquivoInvalido() {
}
public ExcecaoArquivoInvalido(String arg0) {
super(arg0);
}
public ExcecaoArquivoInvalido(Throwable arg0) {
super(arg0);
}
public ExcecaoArquivoInvalido(String arg0, Throwable arg1) {
super(arg0, arg1);
}
}
Fiz vários testes. Se eu capturar a exceção, getMessage() retorna corretamente. Se eu criar uma variável na saida com nome "message", há duas possibilidades: se eu só capturar a exceção, gravar em message a mensagem e retornar EXCEPTION, a Error.jsp mostra a mensagem (é claro que nesse caso ela não mostra stacktrace nem o nome da exceção). Por outro lado, se eu capturo a excecao, crio a variável com a mensagem, e relanço uma nova exceção (vide o codigo abaixo), a mensagem não é mostrada em Error.jsp. Esse trecho de código pode ser o seguinte:
Code:
} catch (ExcecaoArquivoInvalido eai) {
output.setValue("message", eai.getMessage());
throw new ActionException(eai.getMessage(), eai);
}
Alguém pode me ajudar a entender o que está acontecendo?
Obrigado,
José Guilherme