কম্পিউটার

জাভা 9 এ থ্রেড ব্যবহার করে স্ট্যাক ট্রেস কিভাবে পেতে হয়?


জাভা 9 StackWalker যোগ করেছে বর্তমান থ্রেড স্ট্যাক অ্যাক্সেস করার জন্য একটি আদর্শ API প্রদান করার জন্য ক্লাস। পূর্ববর্তী জাভা সংস্করণগুলিতে, আমরা থ্রোয়েবল::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();
   }
   // get StackTrace using Thread
   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. কিভাবে জাভা ব্যবহার করে একটি ভিতরে IllegalArgumentException পরিচালনা করবেন

  2. কিভাবে জাভা ব্যবহার করে একটি ফোল্ডার থেকে ডিরেক্টরি (শুধুমাত্র) পেতে?

  3. কিভাবে আমরা জাভাতে সারি ব্যবহার করে একটি স্ট্যাক প্রয়োগ করতে পারি?

  4. জাভাতে UncaughtExceptionHandler ব্যবহার করে ব্যতিক্রমটি কীভাবে পরিচালনা করবেন?