जावा 9 जोड़ा गया है StackWalker वर्तमान थ्रेड स्टैक तक पहुँचने के लिए एक मानक API प्रदान करने के लिए class। पिछले जावा संस्करणों में, हम Throwable::getStackTrace . का उपयोग कर सकते हैं , थ्रेड::गेटस्टैकट्रेस , और सुरक्षा प्रबंधक::GetClassContext थ्रेड स्टैक प्राप्त करने के लिए प्रदान की गई विधियाँ।
Thread.getStackTrace() विधि एक थ्रेड के स्टैक डंप का प्रतिनिधित्व करने वाले स्टैक ट्रेस तत्वों की एक सरणी लौटाएगी (StackTraceElement[] ) किसी सरणी का पहला तत्व स्टैक के शीर्ष का प्रतिनिधित्व करता है, यह अनुक्रम में अंतिम विधि आमंत्रण हो सकता है, और सरणी का अंतिम तत्व स्टैक के नीचे का प्रतिनिधित्व करता है, यह अनुक्रम में पहला विधि आमंत्रण हो सकता है।पी>
सिंटैक्स
सार्वजनिक StackTraceElement[] getStackTrace()
उदाहरण
आयात करें GetStackTraceTest.testShowReflectFrames (); } // थ्रेड का उपयोग करके स्टैकट्रेस प्राप्त करें सार्वजनिक स्थैतिक शून्य परीक्षण PrintCurrnentStackTrace () { StackTraceElement[] स्टैक =थ्रेड.करंट थ्रेड ()।getStackTrace(); के लिए (StackTraceElement तत्व:स्टैक) {System.out.println (तत्व); } } // SHOW_REFLECT_FRAMES सार्वजनिक स्थैतिक शून्य प्रिंट (स्टैकवॉकर स्टैकवॉकर) { stackWalker.forEach(stackFrame -> System.out.printf("%6d| %s -> %s %n",stackFrame.getLineNumber() , स्टैकफ्रेम।getClassName() , स्टैकफ्रेम।getMethodName() )); } सार्वजनिक स्थैतिक शून्य परीक्षणShowReflectFrames() { अंतिम StackWalker स्टैकवॉकर =स्टैकवॉकर।getInstance (विकल्प.SHOW_REFLECT_FRAMES ); प्रिंट (स्टैकवॉकर); }}आउटपुट
java.base/java.lang.Thread.getStackTrace(Thread.java:1654)GetStackTraceTest.testPrintCurrnentStackTrace(GetStackTraceTest.java:10)GetStackTraceTest.main(GetStackTraceTest.java:5) 17| गेटस्टैकट्रेसटेस्ट -> प्रिंट 25| GetStackTraceTest -> testShowReflectFrames 6| गेटस्टैकट्रेसटेस्ट -> मुख्य