Java 9 a introduit StackWalker API comme alternative à Thread.getStackTrace() ou Throwable.getStackTrace() et SecurityManager.getClassContext(). L'objectif de cette API est un mécanisme permettant de parcourir et de matérialiser les cadres de pile requis, permettant un accès différé efficace à des cadres de pile supplémentaires en cas de besoin.
Si nous devons accéder à chaque élément de pile de la trace de la pile d'exceptions, nous pouvons alors utiliser la méthode getStackTrace() de la classe Throwable. Il renvoie un array de StackTraceElements.
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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!