ホームページ  >  記事  >  Java  >  Java 9 で StackWalker の各スタック要素にアクセスするにはどうすればよいですか?

Java 9 で StackWalker の各スタック要素にアクセスするにはどうすればよいですか?

王林
王林転載
2023-09-05 11:13:021231ブラウズ

如何在Java 9中访问StackWalker的每个堆栈元素?

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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。