尝试捕获块java 9中的Stackwalker

问题描述 投票:-1回答:1

我正在尝试在异常块中打印堆栈行进器,但它仅显示当前类

public class Test1 {
    public void test() throws Exception{
        Test2 test2 = new Test2();
        test2.test();
    }
}
public class Test2 {
    public void test() throws Exception{
        System.out.println(1/0);
    }
}
public class TestStackWalker {
      public static void main(String[] args) {
        Test1 test1 = new Test1();
        try {
            test1.test();
        } catch (Exception e) {
           StackWalker stack = StackWalker.getInstance();
           stack.forEach(System.out::println);
        }
    }
}
java java-9
1个回答
0
投票
来自StackWalker文档:

walk方法为当前线程打开StackWalker的顺序流,然后应用给定的函数对StackFrames流进行步进。

因为您正在从主方法调用它-仅分配了一个StackFrame并正在打印。

如果要堆栈跟踪异常,请使用StackFrame

Throwable::getStackTrace

将打印:

Throwable::getStackTrace

© www.soinside.com 2019 - 2024. All rights reserved.