源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

浅析java异常栈

  • 时间:2021-11-03 06:41 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:浅析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);
  }
[b]Java获取异常堆栈信息[/b] 方法一:
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);
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部