Analisamos o uso da função da pilha de exceções Java através do código de exemplo e compilou dois métodos para o Java para obter informações de pilha de exceção abaixo. O seguinte é todo o conteúdo:
(Stack Trace) EXCECTILH STACK RESTER refere -se a:
Ao arremessar o arremesso, o objeto jogável lança várias camadas de chamadas de método (pilha de chamadas do método) que o processo (transporte) passa. Quanto mais você chegar da declaração de arremesso, o método primeiro entra na pilha de exceções.
(Cadeia causal lotável) Exceção Causa Cadeia:
A propriedade Causa na classe Throwable representa a exceção original embrulhada pela exceção atual. (Pode ser chamado de causa de exceção)
Ao imprimir a pilha de exceção, a pilha de exceção da exceção original é impressa de forma recursiva.
Agora vamos analisar o método throwable.printStackTrace ().
Inside throwable.printStackTrace (PrintStreamorWriter s), podemos ver:
Ao imprimir a pilha de exceções, a pilha de exceção do objeto de exceção atual, que é impressa pela primeira vez.
Em seguida, imprima a cadeia de causas da exceção. (Imprime recursivamente a pilha de exceção da exceção original)
Sincronizado (s.lock ()) {// Imprima nosso rastreio de pilha // 1. Primeiro imprima a pilha de exceção do objeto de exceção atual. s.println (isto); StackTraceElement [] Trace = getourStackTrace (); para (TraceElement de StacktraceElement: rastreamento) s.println ("/tat" + traceElement); // Imprimir exceções suprimiu exceções, se houver for (throwable se: getSupprimed ()) SE.PRINTENCLOSEDSTACKTRACE (s, rastreio, suprimido_caption, "/t", dejavu); // Imprima causa, se houver // 2. Imprimir causar ourCause = getCause (); if (OurCause! = NULL) OurCause.printenclosedStackTrace (s, rastreio, causa_caption, "", dejavu); }Java obtém informações de pilha de exceção
Método 1:
public static string getStackTrace (throwable t) {stringWriter SW = new StringWriter (); PrintWriter PW = new PrintWriter (SW); tente {t.printstacktrace (pw); retornar sw.toString (); } finalmente {pw.close (); }}Método 2:
org.apache.commons.lang3.Exception.ExceptionUtils.getStackTrace (e);