欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析java異常棧

 更新時間:2017年12月12日 08:47:03   作者:lyn_  
給大家通過一個簡單的代碼實例給大家分型了java異常棧問題,需要的朋友參考一下吧。

我們給大家通過實例代碼分析了java異常棧的函數(shù)用法并在下面給大家整理了Java獲取異常堆棧信息的兩種方法,以下是全部內容:

(stack trace)異常棧軌跡是指:

當throw Throwable 時,Throwable對象拋出過程(穿梭)所經歷的多個方法調用層(方法調用棧)。越接近 throw 語句的方法先進入異常棧。

(Throwable Causal Chain)異常原因鏈:

在Throwable類中的cause屬性,表示被當前異常包裝的原始異常。(可以稱為異常原因)

在打印異常棧軌跡時,會遞歸打印 原始異常的異常棧。

現(xiàn)在來分析一下 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);

相關文章

  • SpringBoot參數(shù)校驗的方法總結

    SpringBoot參數(shù)校驗的方法總結

    今天帶大家學習SpringBoot參數(shù)校驗的方法,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot Admin的簡單使用的方法步驟

    SpringBoot Admin的簡單使用的方法步驟

    本文主要介紹了SpringBoot Admin的簡單使用的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java網(wǎng)絡編程之入門篇

    Java網(wǎng)絡編程之入門篇

    這篇文章主要介紹了Java網(wǎng)絡編程入門,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 基于Intellij Idea亂碼的解決方法

    基于Intellij Idea亂碼的解決方法

    下面小編就為大家分享一篇基于Intellij Idea亂碼的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 面試官:java ThreadLocal真的會造成內存泄露嗎

    面試官:java ThreadLocal真的會造成內存泄露嗎

    ThreadLocal,java面試過程中的“釘子戶”,在網(wǎng)上也充斥著各種有關ThreadLocal內存泄露的問題,本文換個角度,先思考ThreadLocal體系中的ThreadLocalMap為什么要設計成弱引用
    2021-08-08
  • springboot實現(xiàn)配置兩個parent的方法

    springboot實現(xiàn)配置兩個parent的方法

    這篇文章主要介紹了springboot實現(xiàn)配置兩個parent的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Intellij IDEA 最全超實用快捷鍵整理(長期更新)

    Intellij IDEA 最全超實用快捷鍵整理(長期更新)

    這篇文章主要介紹了Intellij IDEA 最全實用快捷鍵整理(長期更新),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • ActiveMQ消息隊列技術融合Spring過程解析

    ActiveMQ消息隊列技術融合Spring過程解析

    這篇文章主要介紹了ActiveMQ消息隊列技術融合Spring過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Java詳解使用線程池處理任務方法

    Java詳解使用線程池處理任務方法

    java中經常需要用到多線程來處理,我們非常不建議單純使用繼承Thread或者實現(xiàn)Runnable接口的方式來創(chuàng)建線程,那樣勢必有創(chuàng)建及銷毀線程耗費資源、線程上下文切換問題。同時創(chuàng)建過多的線程也可能引發(fā)資源耗盡的風險,這個時候引入線程池比較合理,方便線程任務的管理
    2022-05-05
  • SpringBoot2 JPA解決懶加載異常的問題

    SpringBoot2 JPA解決懶加載異常的問題

    這篇文章主要介紹了SpringBoot2 JPA解決懶加載異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論