浅析java异常栈
我们给大家通过实例代码分析了java异常栈的函数用法并在下面给大家整理了Java获取异常堆栈信息的两种方法,以下是全部内容:
(stack trace)异常栈轨迹是指:
当throw Throwable 时,Throwable对象抛出过程(穿梭)所经历的多个方法调用层(方法调用栈)。越接近 throw 语句的方法先进入异常栈。
(Throwable Causal Chain)异常原因链:
在Throwable类中的cause属性,表示被当前异常包装的原始异常。(可以称为异常原因)
在打印异常栈轨迹时,会递归打印 原始异常的异常栈。
现在来分析一下 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);
// Print cause, if any
// 2. 打印 异常原因链
Throwable ourCause = getCause();
if (ourCause != null)
ourCause.printEnclosedStackTrace(s, trace, CAUSE_CAPTION, "", dejaVu);
}
Java获取异常堆栈信息
方法一:
public static String getStackTrace(Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
try {
t.printStackTrace(pw);
return sw.toString();
} finally {
pw.close();
}
}
方法二:
org.apache.commons.lang3.exception.ExceptionUtils.getStackTrace(e);
相关文章
一文学透ApplicationContext继承接口功能及与BeanFactory区别
这篇文章主要为大家介绍了ApplicationContext继承接口功能及与BeanFactory区别示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-04-04
Java使用Apache POI库读取Excel表格文档的示例
POI库是Apache提供的用于在Windows下读写各类微软Office文档的Java库,这里我们就来看一下Java使用Apache POI库读取Excel表格文档的示例:2016-06-06
SpringBoot通过@MatrixVariable进行传参详解
这篇文章主要介绍了SpringBoot使用@MatrixVariable传参,文章围绕@MatrixVariable展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下2022-06-06


最新评论