2014-01-18 47 views
0

所以,我有這個類,我想打印哪些方法被調用。當我運行它時,它只打印trace和main,但不打印method1和method2。我怎樣才能改變它,所以它會打印method1和method2,從main調用的方法?打印堆棧跟蹤包括已完成的方法

public class SomeClass 
{ 
    public void method1() {} 
    public void method2() {} 

    public static void main(String args[]) throws Throwable 
    { 
     SomeClass c = new SomeClass(); 
     c.method1(); 
     c.method2(); 
     SomeClass.trace(); 
    } 

    public static void trace() throws Throwable 
    { 
     Throwable t = new Throwable(); 
     StackTraceElement[] stack = t.getStackTrace(); 
     for(StackTraceElement s : stack) 
     System.out.println(s.getMethodName()); 
    } 
} 

回答

6

method1method2已調用但完成自己的工作,所以沒有理由讓他們在跟蹤。堆棧跟蹤的工作是向您展示正在進行的功能(堆棧中的未完成調用)。

如果你正在尋找的東西,會告訴你他們調用(但已完成),您正在尋找的工具類別被稱爲「代碼覆蓋率」測試工具。這不是Java運行時的異常和堆棧跟蹤方面的一部分。

+0

那就解釋一下吧。謝謝你們的快速響應。 – user3210906