返回顶部
首页 > 资讯 > 精选 >Java如何获取异常堆栈信息
  • 209
分享到

Java如何获取异常堆栈信息

java 2023-05-30 18:05:35 209人浏览 八月长安
摘要

这篇文章主要介绍了Java如何获取异常堆栈信息,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java获取异常堆栈信息的两种方法,以下是全部内容:(stack trace)异常

这篇文章主要介绍了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);

感谢你能够认真阅读完这篇文章,希望小编分享的“Java如何获取异常堆栈信息”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Java如何获取异常堆栈信息

本文链接: https://lsjlt.com/news/220309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作