Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा 9 में थ्रेड का उपयोग करके स्टैक ट्रेस कैसे प्राप्त करें?

जावा 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| गेटस्टैकट्रेसटेस्ट -> मुख्य 

  1. जावा का उपयोग करते हुए एक के अंदर IllegalArgumentException को कैसे संभालें?

    जब आप उन विधियों का उपयोग करते हैं जो IllegalArgumentException का कारण बनती हैं, क्योंकि आप उनके कानूनी तर्कों को जानते हैं, तो आप पहले से ही if-condition का उपयोग करके तर्कों को प्रतिबंधित/मान्य कर सकते हैं और अपवाद से बच सकते हैं। हम if कथन का उपयोग करके किसी विधि के तर्क मान को प्रतिबंधित कर सकत

  1. जावा का उपयोग कर फ़ोल्डर से निर्देशिका (केवल) कैसे प्राप्त करें?

    ListFiles() विधि वर्तमान (फ़ाइल) ऑब्जेक्ट द्वारा दर्शाए गए पथ में सभी फ़ाइलों (और निर्देशिकाओं) की वस्तुओं (सार पथ) को धारण करने वाली एक सरणी देता है। फ़ाइल फ़िल्टर इंटरफ़ेस पथ नामों के लिए फ़िल्टर है जिसे आप listFiles() विधि के पैरामीटर के रूप में पास कर सकते हैं। यह विधि पारित फ़िल्टर पर दिए गए फ

  1. जावा में UncaughtExceptionHandler का उपयोग करके अपवाद को कैसे संभालें?

    UncaughtExceptionHandler थ्रेड . के अंदर एक इंटरफ़ेस है कक्षा। जब मुख्य सूत्र जावा वर्चुअल मशीन . के एक न न आए अपवाद के कारण समाप्त होने वाला है थ्रेड के UncaughtExceptionHandler . का आह्वान करेगा कुछ त्रुटि प्रबंधन करने के अवसर के लिए जैसे फ़ाइल के अपवाद . को लॉग करना या लॉग को सर्वर पर अपलोड क