Pegar o conteudo do printStackTrace()

3 respostas
spranta

Olá pessoal, quando eu estou dentro de um bloco catch e chamo o metodo printStackTrace() do objeto da classe de excecao é mostrado no console do servidor de aplicação toda a pilha de metodos percorridos até se chegar ao erro, no entanto, eu queria pegar este conteudo e jogar dentro de uma string. Alguem sabe como posso fazer isso, pois somente o getMessage() não adianta, eu queria especificamente era pegar o nome da exceçao e a linha em que ocorreu.
Desde já agradeço a todos.
Spranta

3 Respostas

Rafael_Steil
StringWriter strWriter = new StringWriter();
PrintWriter writer = new PrintWriter(strWriter);
t.printStackTrace(writer);		
writer.close();

Rafael

RodrigoSol

Você pode usar o metodo getStackTrace() que te retorna uma matriz com a pilha.
Você pode iterar nessa matriz e obter as informações que você precisa.

try{
			throw new Exception();
		}catch(Exception e){
			StackTraceElement[] stack = e.getStackTrace();
                                                
stack[0].getLineNumber();
stack[0].getFileName();
stack[0].getMethodName();
	}
kuchma

“Rafael Steil”:
StringWriter strWriter = new StringWriter(); PrintWriter writer = new PrintWriter(strWriter); t.printStackTrace(writer); writer.close();

Rafael

Apenas para complementar o exemplo:

StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter); e.printStackTrace(printWriter); StringBuffer erro = stringWriter.getBuffer(); printWriter.close(); stringWriter.close(); System.out.println("Stack Trace do erro: " + erro.toString());

Eu mesmo nao saquei imediatamente como tirava a stack trace do PrintWriter/StringWriter depois de armazenar. :mrgreen:

Marcio Kuchma

Criado 16 de fevereiro de 2004
Ultima resposta 17 de fev. de 2004
Respostas 3
Participantes 4