堆疊跟蹤
外觀
| 導航 異常 主題: |
堆疊跟蹤是從應用程式啟動時到程式執行當前位置的所有方法呼叫列表。當異常被丟擲時,Java 虛擬機器會自動生成堆疊跟蹤,以指示異常發生的點以及程式到異常發生的點為止的執行過程。 最近的方法呼叫位於列表頂部。
|
|
透過呼叫異常的 public void printStackTrace() 方法,可以將堆疊跟蹤列印到標準錯誤流。
從 Java 1.4 開始,堆疊跟蹤被封裝在一個名為 java.lang.StackTraceElement 的 Java 類的陣列中。堆疊跟蹤元素陣列由 Throwable.getStackTrace() 方法返回。每個元素代表一個單獨的堆疊幀。除堆疊頂部的幀外,所有堆疊幀都代表方法呼叫。堆疊頂部的幀代表生成堆疊跟蹤的執行點。通常,這是建立與堆疊跟蹤相對應的可丟擲物件的點。
堆疊幀代表以下資訊
程式碼節 6.24:堆疊幀。
public StackTraceElement(String declaringClass,
String methodName,
String fileName,
int lineNumber);
|
建立一個表示指定執行點的堆疊跟蹤元素。
在許多情況下,為了除錯的目的,我們希望將堆疊跟蹤轉換為一個 字串,以便我們可以將其記錄到我們的日誌檔案中。
以下程式碼展示瞭如何做到這一點
程式碼節 6.25:儲存堆疊跟蹤。
import java.io.StringWriter;
import java.io.PrintWriter;
...
Exception e = new NullPointerException();
StringWriter outError = new StringWriter();
e.printStackTrace(new PrintWriter(outError));
String errorString = outError.toString();
// Do whatever you want with the errorString
|
