Java 9 では、StackWalker API が Thread.getStackTrace() または Throwable 代替手段として導入されました。 .getStackTrace() および SecurityManager.getClassContext() に。この API の目的は、必要なスタック フレームをトラバースして実体化し、必要なときに追加のスタック フレームへの効率的な遅延アクセスを可能にするメカニズムです。
例外スタック トレースの各スタック要素にアクセスする必要がある場合は、Throwable クラスの getStackTrace() メソッドを使用できます。 StackTraceElements の array を返します。
import java.util.*; <strong>// Test1 class </strong>class Test1 { public void test() throws Exception { Test2 test2 = new Test2(); test2.test(); } } <strong>// Test2 class</strong> class Test2 { public void test() throws Exception { System.out.println(1/0); } } <strong>// Main class</strong> public class StackWalkerTest { public static void main(String args[]) { Test1 test1 = new Test1(); try { test1.test(); } catch(Exception e) { <strong>Arrays.stream</strong>(e.<strong>getStackTrace()</strong>).<strong>forEach</strong>(System.out::println); } } }
<strong>Test2.test(StackWalkerTest.java:14) Test1.test(StackWalkerTest.java:7) StackWalkerTest.main(StackWalkerTest.java:23)</strong>
以上がJava 9 で StackWalker の各スタック要素にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。