淺析java異常棧
我們給大家通過實例代碼分析了java異常棧的函數(shù)用法并在下面給大家整理了Java獲取異常堆棧信息的兩種方法,以下是全部內(nèi)容:
(stack trace)異常棧軌跡是指:
當throw Throwable 時,Throwable對象拋出過程(穿梭)所經(jīng)歷的多個方法調(diào)用層(方法調(diào)用棧)。越接近 throw 語句的方法先進入異常棧。
(Throwable Causal Chain)異常原因鏈:
在Throwable類中的cause屬性,表示被當前異常包裝的原始異常。(可以稱為異常原因)
在打印異常棧軌跡時,會遞歸打印 原始異常的異常棧。
現(xiàn)在來分析一下 Throwable.printStackTrace() 方法。
在Throwable.printStackTrace(PrintStreamOrWriter s) 內(nèi)部,我們可以看到:
在打印異常棧時,是先打印 當前異常對象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區(qū)別
這篇文章主要為大家介紹了ApplicationContext繼承接口功能及與BeanFactory區(qū)別示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
Java使用Apache POI庫讀取Excel表格文檔的示例
POI庫是Apache提供的用于在Windows下讀寫各類微軟Office文檔的Java庫,這里我們就來看一下Java使用Apache POI庫讀取Excel表格文檔的示例:2016-06-06
SpringBoot通過@MatrixVariable進行傳參詳解
這篇文章主要介紹了SpringBoot使用@MatrixVariable傳參,文章圍繞@MatrixVariable展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-06-06

