কম্পিউটার টিউটোরিয়াল

জাভা ৯-এ থ্রেড ব্যবহার করে স্ট্যাক ট্রেস পাওয়ার পদ্ধতি

জাভা ৯ করেন্ট থ্রেড স্ট্যাক অ্যাক্সেস করার জন্য স্ট্যান্ডার্ড API প্রদান করার জন্য StackWalker ক্লাস যোগ করেছে। προηγের জাভা ভার্সনে, আমরা Throwable::getStackTrace, Thread::getStackTrace, এবং SecurityManager::GetClassContext প্রদত্ত মেথডগুলো ব্যবহার করতাম থ্রেড স্টACK পাওয়ার জন্য।

Thread.getStackTrace() মেথড একটি স্ট্যাক ট্রেস এলিমেন্টের অ্যারে রিটার্ন করে যা একটি থ্রেডের স্ট্যাক ডাম্প রিপ্রেজেন্ট করে (StackTraceElement[])। অ্যারেতে প্রথম এলিমেন্ট স্ট্যাকের টপ রিপ্রেজেন্ট করে, যা হতে পারে মেথড ইনভোকেশন সিকোয়েন্সের লাস্ট, এবং অ্যারেতে লাস্ট এলিমেন্ট স্ট্যাকের বটম রিপ্রেজেন্ট করে, যা হতে পারে মেথড ইনভোকেশন সিকোয়েন্সের ফার্স্ট।

সিনট্যাক্স

public StackTraceElement[] getStackTrace()

উদাহরণ

import java.lang.StackWalker.Option;

public class GetStackTraceTest {
    public static void main(String args[]) {
        GetStackTraceTest.testPrintCurrnentStackTrace();
        GetStackTraceTest.testShowReflectFrames();
    }
    
    // Thread ব্যবহার করে StackTrace পান
    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 হ্যান্ডেল করা

  2. জাভাতে ফোল্ডার থেকে শুধু ডাইরেক্টরি পাওয়া

  3. জাভাতে কিউ ব্যবহার করে স্ট্যাক বাস্তবায়ন

  4. জাভাতে UncaughtExceptionHandler ব্যবহার করে এক্সেপশন কীভাবে হ্যান্ডেল করবেন?