জাভাতে Generic Exception Class তৈরি করে ডাইনামিক এবং পুনঃব্যবহারযোগ্য এক্সেপশন মেকানিজম তৈরি করা যায়। সাধারণত, এটি ব্যবহার করা হয় এমন অবস্থায় যেখানে এক্সেপশন টাইপের সাথে কিছু অতিরিক্ত টাইপ-ডেটা যুক্ত করতে হয়। Generic Exception Class টাইপ-সেইফটি নিশ্চিত করে এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।
Generic Exception Class তৈরির উপকারিতা
- টাইপ-সেইফ এক্সেপশন হ্যান্ডলিং: কম্পাইল টাইমে টাইপ যাচাই করা যায়।
- ডাইনামিক ডেটা যোগ করা: এক্সেপশন ক্লাসে অতিরিক্ত টাইপযুক্ত ডেটা যোগ করা যায়।
- Reusable Design: একবার তৈরি করলে এটি বিভিন্ন প্রজেক্টে পুনঃব্যবহার করা যায়।
- কোড সহজ ও পরিষ্কার করা: কমন এক্সেপশন মেকানিজম তৈরি করে কোড কমপ্লেক্সিটি কমানো যায়।
Generic Exception Class এর উদাহরণ
১. একটি সাধারণ Generic Exception Class
public class GenericException<T> extends Exception {
private T additionalInfo;
public GenericException(String message, T additionalInfo) {
super(message);
this.additionalInfo = additionalInfo;
}
public T getAdditionalInfo() {
return additionalInfo;
}
}
ব্যবহার:
public class Main {
public static void main(String[] args) {
try {
throw new GenericException<>("Custom Exception", 123);
} catch (GenericException<Integer> e) {
System.out.println("Exception Message: " + e.getMessage());
System.out.println("Additional Info: " + e.getAdditionalInfo());
}
}
}
আউটপুট:
Exception Message: Custom Exception
Additional Info: 123
২. টাইপ অনুযায়ী ভিন্ন ডেটা হ্যান্ডলিং
public class TypedGenericException<T> extends Exception {
private T errorDetail;
public TypedGenericException(String message, T errorDetail) {
super(message);
this.errorDetail = errorDetail;
}
public T getErrorDetail() {
return errorDetail;
}
}
ব্যবহার:
public class Main {
public static void main(String[] args) {
try {
processString("Invalid Data");
} catch (TypedGenericException<String> e) {
System.out.println("Error Message: " + e.getMessage());
System.out.println("Error Detail: " + e.getErrorDetail());
}
}
public static void processString(String input) throws TypedGenericException<String> {
if ("Invalid Data".equals(input)) {
throw new TypedGenericException<>("Invalid String Data Provided", input);
}
}
}
আউটপুট:
Error Message: Invalid String Data Provided
Error Detail: Invalid Data
৩. Complex Generic Exception Class
public class DetailedException<T, U> extends Exception {
private T errorCode;
private U errorDetails;
public DetailedException(String message, T errorCode, U errorDetails) {
super(message);
this.errorCode = errorCode;
this.errorDetails = errorDetails;
}
public T getErrorCode() {
return errorCode;
}
public U getErrorDetails() {
return errorDetails;
}
}
ব্যবহার:
public class Main {
public static void main(String[] args) {
try {
validateData(404, "Data not found");
} catch (DetailedException<Integer, String> e) {
System.out.println("Exception Message: " + e.getMessage());
System.out.println("Error Code: " + e.getErrorCode());
System.out.println("Error Details: " + e.getErrorDetails());
}
}
public static void validateData(int code, String details) throws DetailedException<Integer, String> {
if (code == 404) {
throw new DetailedException<>("Validation Failed", code, details);
}
}
}
আউটপুট:
Exception Message: Validation Failed
Error Code: 404
Error Details: Data not found
Generics Exception Class এর সীমাবদ্ধতা
- Checked Exception: Generics ব্যবহার করে শুধুমাত্র Checked Exception তৈরি করা সম্ভব।
- Type Erasure: Generics এর টাইপ ইনফরমেশন Type Erasure এর মাধ্যমে কম্পাইল টাইমে মুছে ফেলা হয়, যা কিছু ক্ষেত্রে সীমাবদ্ধতা আনতে পারে।
- Performance Impact: যদিও টাইপ ইনফরমেশন মুছে ফেলা হয়, তবে Generics ব্যবহার করলে কম্পাইল টাইমে কিছুটা জটিলতা যোগ হয়।
- Generic Exception Class টাইপ-সেইফ এবং পুনঃব্যবহারযোগ্য এক্সেপশন হ্যান্ডলিংয়ের জন্য একটি শক্তিশালী সমাধান।
- এটি কাস্টম এক্সেপশন ক্লাসে ডাইনামিক এবং টাইপড ডেটা সংযুক্ত করার সুযোগ দেয়।
- জাভার Type Erasure মেকানিজম ব্যবহার করে এটি কম্পাইল টাইমে টাইপ যাচাই করে, কিন্তু রানটাইম ওভারহেড ছাড়াই কার্যকর হয়।
- বড় এবং ডাইনামিক অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য এটি একটি কার্যকর টুল।
Content added By
Read more