一般程式發生問題會拋出 Exception 來,這時候就可以從 Exception 中把程式運行過程的 code stack 叫出來看,這是最常見的程式設計師除錯 (debug) 會用的東西。
然而今天要是沒有報錯,但又想把跑到這段程式或函式 (Function) 的 code stack 叫出來看,進而解到底是怎麼會跑到這裡或是誰呼叫了這函式的話要怎麼做?
想要取得 code stack 就必須先有 Exception ,然而沒報錯也可以自己拋錯。不過這邊沒有要拋就是了😆
new Exception();
先建立一個新的 Exception 物件,建立後就可以用它來執行 printStackTrace() ,這樣就可以在 console 看到跑到這段程式碼的 code stack 了。但這邊有個問題,要是我想要寫 log 去記錄怎麼辦?
那就要先把它存放到 String 裡面去,但是 printStackTrace() 是沒有回傳值的,這時候就要用 StringWriter 和 PrintWriter 放進去把資訊帶出來。
StringWriter codeStack = new StringWriter();
new Exception().printStackTrace(new PrintWriter(codeStack));
String codeStack = codeStack.toString();
但是每次要紀錄都要這3行,有點囉嗦耶!
沒關係,你可以引入 org.apache.commons 的 Library ,這樣就可以一行解決它了。
String codeStack = ExceptionUtils.getStackTrace(new Exception());
好啦,這樣你就可以在任意地方安插這行來取得程式碼堆疊,進而分析出你所遇到的問題癥結點在哪囉!😎
沒有留言:
張貼留言