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

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


जावा 9 ने StackWalker क्लास जोड़ी है जो वर्तमान थ्रेड स्टैक तक पहुंचने के लिए एक मानक API प्रदान करती है। पिछले जावा संस्करणों में, हम Throwable::getStackTrace, Thread::getStackTrace, और SecurityManager::getClassContext द्वारा प्रदान की गई विधियों का उपयोग करके थ्रेड स्टैक प्राप्त कर सकते थे।

Thread.getStackTrace() विधि स्टैक ट्रेस तत्वों की एक सरणी लौटाती है जो एक थ्रेड के स्टैक डंप को दर्शाती है (StackTraceElement[])। सरणी का पहला तत्व स्टैक के शीर्ष को दर्शाता है, यह एक क्रम में अंतिम विधि आह्वान हो सकता है, और सरणी का अंतिम तत्व स्टैक के निचले भाग को दर्शाता है, यह एक क्रम में पहला विधि आह्वान हो सकता है।

सिंटैक्स

public StackTraceElement[] getStackTrace()

उदाहरण

import java.lang.StackWalker.Option; public class GetStackTraceTest {     public static void main(String args[]) {       GetStackTraceTest.testPrintCurrnentStackTrace();       GetStackTraceTest.testShowReflectFrames();     }     // थ्रेड का उपयोग करके स्टैक ट्रेस प्राप्त करें     public static void testPrintCurrnentStackTrace() {       StackTraceElement[] stack = Thread.currentThread().getStackTrace();       for(StackTraceElement element : stack) {           System.out.println(element);       }     }     // SHOW_REFLECT_FRAMES     public static void print(StackWalker stackWalker) {       stackWalker.forEach(stackFrame -> System.out.printf("%6d| %s -> %s %n", stackFrame.getLineNumber(), stackFrame.getClassName(), stackFrame.getMethodName()));     }     public static void testShowReflectFrames() {       final StackWalker stackWalker = StackWalker.getInstance(Option.SHOW_REFLECT_FRAMES);       print(stackWalker);     } }

आउटपुट

java.base/java.lang.Thread.getStackTrace(Thread.java:1654) GetStackTraceTest.testPrintCurrnentStackTrace(GetStackTraceTest.java:10) GetStackTraceTest.main(GetStackTraceTest.java:5) 17| GetStackTraceTest -> print 25| GetStackTraceTest -> testShowReflectFrames 6| GetStackTraceTest -> main

  1. - जावा में if का उपयोग करके IllegalArgumentException को कैसे हैंडल करें

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

  1. जावा में फोल्डर से केवल डायरेक्टरीज कैसे प्राप्त करें जावा में फोल्डर से केवल डायरेक्टरीज कैसे प्राप्त करें

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

  1. - Java में UncaughtExceptionHandler का उपयोग करके एक्सेप्शन कैसे हैंडल करें?

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