Java-তে Custom Exception তৈরি করার মাধ্যমে আপনি প্রোগ্রামে আপনার নিজস্ব এরর বা ব্যতিক্রম (exception) পরিস্থিতি সঠিকভাবে ধরতে এবং পরিচালনা করতে পারেন। Reflection API ব্যবহার করে, আপনি রানটাইমে Custom Exceptions এর মেটাডেটা (metadata) অ্যাক্সেস করতে এবং তাদের কার্যকারিতা সম্পর্কে জানতেও পারেন।
এখানে আমরা দেখব কিভাবে Custom Exception তৈরি করা যায় এবং Reflection এর মাধ্যমে সেই Exception এর তথ্য পাওয়া যায়।
Custom Exception তৈরি করা:
Java-তে একটি কাস্টম এক্সেপশন (custom exception) তৈরি করতে, আপনাকে একটি নতুন ক্লাস তৈরি করতে হয় যা Exception ক্লাস বা তার কোনো সাবক্লাস (যেমন RuntimeException) থেকে ইনহেরিট করে।
Custom Exception তৈরি করার সাধারণ প্রক্রিয়া:
- Exception ক্লাস থেকে ইনহেরিট করা: কাস্টম এক্সেপশন ক্লাসটি
ExceptionবাRuntimeExceptionথেকে ইনহেরিট করবে। - কন্সট্রাক্টর তৈরি করা: এক্সেপশন ক্লাসের কন্সট্রাক্টর তৈরি করা যা একটি বার্তা বা কাস্টম তথ্য গ্রহণ করতে পারে।
- এক্সেপশন মেসেজ প্রেরণ করা: ব্যবহারকারী বা ডেভেলপারকে যে ত্রুটি ঘটেছে তা জানানোর জন্য একটি কাস্টম মেসেজ প্রদান করা।
Custom Exception উদাহরণ:
// Custom Exception Class
class InvalidAgeException extends Exception {
// Constructor with custom message
public InvalidAgeException(String message) {
super(message); // Calling the parent class constructor
}
}
public class CustomExceptionExample {
// Method to check age eligibility
public static void checkAge(int age) throws InvalidAgeException {
if (age < 18) {
// Throwing the custom exception if age is less than 18
throw new InvalidAgeException("Age must be 18 or older. Provided age: " + age);
} else {
System.out.println("You are eligible.");
}
}
public static void main(String[] args) {
try {
// Checking age eligibility
checkAge(15);
} catch (InvalidAgeException e) {
// Catching the custom exception
System.out.println("Caught Exception: " + e.getMessage());
}
}
}
কোড বিশ্লেষণ:
- Custom Exception
InvalidAgeException:- এটি
Exceptionক্লাস থেকে ইনহেরিট করে। কাস্টম মেসেজ সহ এক্সেপশন থ্রো (throw) করার জন্য একটি কন্সট্রাক্টর তৈরি করা হয়েছে।
- এটি
checkAgeমেথড:- এটি
InvalidAgeExceptionকাস্টম এক্সেপশন থ্রো করে, যদি বয়স ১৮ বছরের কম হয়।
- এটি
- Main মেথড:
checkAgeমেথড কল করা হয় এবং যদি ত্রুটি ঘটে তবে কাস্টম এক্সেপশন ক্যাচ (catch) করা হয় এবং মেসেজ প্রিন্ট করা হয়।
আউটপুট:
Caught Exception: Age must be 18 or older. Provided age: 15
Reflection এবং Custom Exception Integration:
Reflection API ব্যবহার করে আপনি কাস্টম এক্সেপশন ক্লাসের তথ্য জানতে পারেন, যেমন ক্লাসের নাম, কন্সট্রাক্টর, ফিল্ডস বা মেথড। এতে আপনি চলতি কোডের মধ্যে কোথায় কাস্টম এক্সেপশন তৈরি বা থ্রো (throw) হয়েছে তা ইন্সপেক্ট (inspect) করতে পারেন।
Reflection ব্যবহার করে Custom Exception এর মেটাডেটা অ্যাক্সেস করা:
এখানে আমরা দেখব কিভাবে Reflection ব্যবহার করে কাস্টম এক্সেপশন ক্লাসের তথ্য পাওয়া যায়।
import java.lang.reflect.*;
class InvalidAgeException extends Exception {
public InvalidAgeException(String message) {
super(message);
}
}
public class ReflectionCustomExceptionExample {
public static void main(String[] args) {
try {
// Example of throwing a custom exception
throw new InvalidAgeException("Age must be 18 or older.");
} catch (InvalidAgeException e) {
// Reflection to access Exception class information
Class<?> cls = e.getClass();
// Getting class name
System.out.println("Exception class name: " + cls.getName());
// Getting constructors
Constructor<?>[] constructors = cls.getDeclaredConstructors();
for (Constructor<?> constructor : constructors) {
System.out.println("Constructor: " + constructor.getName());
}
// Getting superclass
Class<?> superclass = cls.getSuperclass();
System.out.println("Superclass of the exception: " + superclass.getName());
}
}
}
কোড বিশ্লেষণ:
throw new InvalidAgeException("Age must be 18 or older.");:- এখানে একটি কাস্টম এক্সেপশন থ্রো (throw) করা হচ্ছে।
InvalidAgeExceptionক্লাসের কন্সট্রাক্টর থেকে একটি কাস্টম মেসেজ পাঠানো হচ্ছে।
- এখানে একটি কাস্টম এক্সেপশন থ্রো (throw) করা হচ্ছে।
- Reflection এর মাধ্যমে Exception ক্লাসের তথ্য পাওয়া:
e.getClass(): এটি কাস্টম এক্সেপশন ক্লাসেরClassঅবজেক্ট প্রদান করে।cls.getDeclaredConstructors(): এর মাধ্যমে এক্সেপশন ক্লাসের সব কন্সট্রাক্টর সম্পর্কে তথ্য পাওয়া যায়।cls.getSuperclass(): এর মাধ্যমে এক্সেপশন ক্লাসের সুপার ক্লাসের নাম (যেমনException) পাওয়া যায়।
আউটপুট:
Exception class name: InvalidAgeException
Constructor: InvalidAgeException
Constructor: java.lang.Exception
Superclass of the exception: java.lang.Exception
Reflection এবং Exception Handling এর সুবিধা:
- Error Logging এবং Debugging:
- Reflection ব্যবহার করে আপনি সহজেই এক্সেপশন ক্লাসের মেটাডেটা বিশ্লেষণ করতে পারেন। এতে ত্রুটি ট্র্যাকিং বা ডিবাগিংয়ের সময় এক্সেপশন সম্পর্কিত বিস্তারিত তথ্য পাওয়া সহজ হয়।
- Dynamic Exception Handling:
- Reflection এর মাধ্যমে আপনি কোন এক্সেপশন ধরনের তথ্য ইন্সপেক্ট করতে পারেন, এবং বিভিন্ন এক্সেপশন হ্যান্ডলার তৈরি করতে পারেন।
- Advanced Exception Frameworks:
- Reflection ব্যবহার করে, আপনি কাস্টম এক্সেপশন ফ্রেমওয়ার্ক তৈরি করতে পারেন, যেখানে বিভিন্ন এক্সেপশন ক্লাস এবং তাদের কন্সট্রাক্টর ডাইনামিকভাবে ইনস্ট্যান্সিয়েট (instantiate) করা যেতে পারে।
- Custom Exception তৈরি করা জাভায় খুবই সাধারণ একটি কাজ এবং এটি প্রোগ্রামে কাস্টম এরর হ্যান্ডলিং করতে সহায়তা করে।
- Reflection API ব্যবহার করে, আপনি রানটাইমে কাস্টম এক্সেপশন ক্লাসের মেটাডেটা অ্যাক্সেস করতে পারেন, যেমন কন্সট্রাক্টর, সুপার ক্লাস, মেথড ইত্যাদি। এটি ডাইনামিক কোডিং এবং ট্রাবলশ্যুটিং বা ডিবাগিং কাজে সহায়ক।
- Custom Exception এবং Reflection একত্রিত করে আরও উন্নত এক্সেপশন হ্যান্ডলিং এবং ডিবাগিং ফিচার তৈরি করা সম্ভব।
Read more