Java e Reflection

Java e Reflection

Bom dia, dei uma pesquisa sobre Reflection, para ver se ele poderia resolver um problema. Encontrei um post
http://www.guj.com.br/posts/list/55.java que indica um artigo http://www.guj.com.br/java.artigo.10.1.guj sobre o assunto. Porem não me ficou claro.

A duvida: Tenho uma classe onde eh concentrado tratamentos para exeções, nesta classe estou montando um relatorio capturando o erro gerado (aplicação web com jboss) a assinatura do metodo eh esta:

protected void trataException(Exception e, HttpServletRequest request, HttpServletResponse response) 

Na mensagem capatura ele mostra o metodo e a classe que ocorreu o erro, teria como verificar qual atributo esta com problema
usando o reflection? Como? Tendo em vista que em muitos casos terei objetos grandes, com varios atributos de varios tipos.

Ex.

java.lang.NullPointerException
at java.util.Arrays.mergeSort(Arrays.java:1284)
at java.util.Arrays.mergeSort(Arrays.java:1296)
at java.util.Arrays.mergeSort(Arrays.java:1296)
at java.util.Arrays.sort(Arrays.java:1223)
at java.util.Collections.sort(Collections.java:159)
at br.com.exemplo.reports.ReportInconsistencia.generateDetail(ReportInconsistencia.java:111)
at br.com.exemplo.struts.action.LancGeradoAction.saveLactoContabil(LancGeradoAction.java:409)

Este erro mostra onde ocorreu, mas nao qual atributo, logo tenho q debugar pra ver onde esta o problema, a ideia seria mostrar no relatorio o erro e o(s) atributo(s) com problema.

Como assim “qual atributo”?

Em todo caso, creio que não é possível analisar via reflection um código para saber o que ocorreu num dado momento. Reflexão serve para, em tempo de execução, descobrir quais são os métodos de uma dada classe e então invoca-los. Ou descobrir e ler os atributos que uma classe tem.

Acho que o máximo que vc poderia fazer é listar todos os atributos da classe e seus valores, e pressupor que quem analisa o erro possa identificar qual deles contém um valor inválido.

É importante lembrar que a reflexão não tem qualquer papel no interior do método. Ou seja, não é possível descobrir valores de variáveis locais ou como o código de um método foi implementado.

Hhummm, certo, acho q da pra fazer alguma coisa.
Soh mais uma duvida. no metodo que passei a assinatura, com podeira fazer a refrexão nele?

vou dar uma olhada.

vlw

Dê uma olhada nesse framework: http://asm.objectweb.org/
Já usei ele para geração de beans a partir de um modelo em XML, talvez ele possar ser útil pra oq você esta querendo.