浅析java异常栈

网友投稿 437 2023-03-07


浅析java异常栈

我们给大家通过实例代码分析了java异常栈的函数用法并在下面给大家整理了Java获取异常堆栈信息的两种方法,以下是全部内容:

(stack trace)异常栈轨迹是指:

当throw Throwable 时,Throwable对象抛出过程(穿梭)所经历的多个方法调用层(方法调用栈)。越接近 throw 语句的方法先进入异常栈。

(Throwable Causal Chain)异常原因链:

在Throwable类中的cause属性,表示被当前异常包装的原始异常。(可以称为异常原因)

在打印异常栈轨迹时,会递归打印 原始http://异常的异常栈。

现在来分析一下 Throwable.printStackTrace() 方法。

在Throwable.printStackTrace(PrintStreamOrWriter s) 内部,我们可以看到:

在打印异常栈时,是先打印 当前异常对象this的异常栈。

然后再打印 异常原因链。(递归打印 原始异常的异常栈)

synchronized (s.lock()) {

// Print our stack trace

// 1. 先打印 当前异常对象this的 异常栈。

s.println(this);

StackTraceElement[] trace = getOurStackTrace();

for (StackTraceElement traceElement : trace)

s.println("\tat " + traceElement);

// Print suppressed exceptions, if any

for (Throwable se : getSuppressed())

se.printEnclosedStackTrace(s, trace, SUPPRESSED_CAPTION, "\t", dejaVu);

// Prihttp://nt cause, if any

// 2. 打印 异常原因链

Throwable ourCause = getCause();

if (ourCause != IQttyzxnull)

ourCause.printEnclosedStackTrace(s, trace, CAUSE_CAPTION, "", dejaVu);

}

Java获取异常堆栈信息

方法一:

publiIQttyzxc static String getStackTrace(Throwable t) {

StringWriter sw = new StringWriter();

PrintWriter pw = new PrintWriter(sw);

http:// try {

t.printStackTrace(pw);

return sw.toString();

} finally {

pw.close();

}

}

方法二:

org.apache.commons.lang3.exception.ExceptionUtils.getStackTrace(e);


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:电子秤 开发接口(电子秤 开发接口有哪些)
下一篇:Vue响应式原理深入解析及注意事项
相关文章

 发表评论

暂时没有评论,来抢沙发吧~