StackWalker API Java 9 में एक नई सुविधा है, और यह प्रीडिसेसर स्टैक ट्रेस एलिमेंट के प्रदर्शन में सुधार करता है। यह अपवाद के मामले में स्टैक एलिमेंट को फ़िल्टर करने या एप्लिकेशन व्यवहार को समझने का एक तरीका भी प्रदान करता है। Java 9 में, स्टैक ट्रेस तक पहुंचने का तरीका बहुत सीमित है और एक बार में संपूर्ण स्टैक जानकारी प्रदान करता है।
नीचे दिए गए उदाहरण में, हमें स्टैक फ्रेम में सभी एट्रिब्यूट प्रिंट करने की आवश्यकता है।
उदाहरण
import java.lang.StackWalker.StackFrame; import java.util.*; import java.util.stream.*; import java.lang.StackWalker.Option; public class AllAttributesTest { public static void main(String args[]) { System.out.println("Java 9 Stack Walker API - Print all attributes in stack frame"); StackWalker newWalker = StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE); List<StackWalker.StackFrame> stackFrames = newWalker.walk(frames -> frames.limit(1).collect(Collectors.toList())); stackFrames.forEach(test-> { System.out.printf("[Bytecode Index] %d%n", test.getByteCodeIndex()); System.out.printf("[Class Name] %s%n", test.getClassName()); System.out.printf("[Declaring Class] %s%n", test.getDeclaringClass()); System.out.printf("[File Name] %s%n", test.getFileName()); System.out.printf("[Method Name] %s%n", test.getMethodName()); System.out.printf("[Is Native] %b%n", test.isNativeMethod()); System.out.printf("[Line Number] %d%n", test.getLineNumber()); }); } }आउटपुट
Java 9 Stack Walker API - Print all attributes in stack frame [Bytecode Index] 21 [Class Name] AllAttributesTest [Declaring Class] class AllAttributesTest [File Name] AllAttributesTest.java [Method Name] main [Is Native] false [Line Number] 10