浅析java异常栈
发布时间:2020-05-23 17:36:29 所属栏目:Java 来源:互联网
导读:我们给大家通过实例代码分析了java异常栈的函数用法并在下面给大家整理了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,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); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java标准库中的无副作用方法
- java – PowerMock PrepareForTest注释导致AmazonSQSClient
- Java:如何仍然发生不可能的NullPointerException?
- 使用Javamail API和IMAP批量获取邮件正文
- java – 在App层之间传递Joda Time对象
- java – JSF 2.0.无法在preRenderView事件处理程序中获取PO
- java – 在C类的方法m中,是不是this.getClass()总是C?
- `java(0%2!= 0)== false`
- android 计算地图上两点距离的算法
- java – Spring Batch:org.springframework.batch.item.Re
