Boa tarde a todos.
Existe alguma forma de pegar o nome do método que está sendo executado, como acontece quando utilizo:
this.getClass().getName();
Grato a todos.
Ederson
Boa tarde a todos.
Existe alguma forma de pegar o nome do método que está sendo executado, como acontece quando utilizo:
this.getClass().getName();
Grato a todos.
Ederson
Dah sim, mas eh meio gambiarrento:
try {
throw new Exception();
} catch (Exception e) {
System.out.println(e.getStackTrace()[0].getMethodName());
}
Hehehe, realmente fica “bunito pacas”.
Muito obrigado CV
[quote=“cv”]Dah sim, mas eh meio gambiarrento:
try {
throw new Exception();
} catch (Exception e) {
System.out.println(e.getStackTrace()[0].getMethodName());
}
[/quote]
Eca!!
Faz direito por favor:
Throwable t = new Throwable();
t = t.fillInStackTrace();
t.getStackTrace()[0];
Olá a todos.
Realizei o testes com os dois códigos apresentados, mas eles tiveram divergências quanto ao local onde ocorreu o erro.
No código do CV, trouxe a linha correta.
RetornaString.retornaMensagem(RetornaString.java:34)
No código do Louds, trouxe a linha onde recebe o objeto Throwable a partir do método fillInStackTrace(). Utilizei a conversão para String nele para que pudesse visualizar o conteúdo corretamente, talvez isso possa ter causado a divergência. Estou certo Louds?
RetornaString.retornaMensagem(RetornaString.java:58)
A classe criada é apenas para teste. Ficam os resultados para verificarmos qual possui a melhor saída.
Grato a todos.
Ederson
Ele preenche com o stacktrace do local onde fillInStackTrace() for chamado.
Falando nisso, a chamada a fillInStackTrace() é redundante, basta construir um Throwable.
Vou fazer um novo teste.
Obrigado Louds.
Hmm… boa, Louds!
public String emQueLinhaEuEstou() {
return new Throwable().getStackTrace()[0].toString();
}
public void main(String[] args) {
System.out.println(emQueLinhaEuEstou());
int i = 1+1;
System.out.println(emQueLinhaEuEstou());
}
Se der errado, talvez o indice 0 no array de StackTraceElements nao seja 0, mas 1. YMMV
:shock: :shock: :shock: