Java Technologies Generic Exception Class তৈরির কৌশল গাইড ও নোট

273

জাভাতে Generic Exception Class তৈরি করে ডাইনামিক এবং পুনঃব্যবহারযোগ্য এক্সেপশন মেকানিজম তৈরি করা যায়। সাধারণত, এটি ব্যবহার করা হয় এমন অবস্থায় যেখানে এক্সেপশন টাইপের সাথে কিছু অতিরিক্ত টাইপ-ডেটা যুক্ত করতে হয়। Generic Exception Class টাইপ-সেইফটি নিশ্চিত করে এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।


Generic Exception Class তৈরির উপকারিতা

  1. টাইপ-সেইফ এক্সেপশন হ্যান্ডলিং: কম্পাইল টাইমে টাইপ যাচাই করা যায়।
  2. ডাইনামিক ডেটা যোগ করা: এক্সেপশন ক্লাসে অতিরিক্ত টাইপযুক্ত ডেটা যোগ করা যায়।
  3. Reusable Design: একবার তৈরি করলে এটি বিভিন্ন প্রজেক্টে পুনঃব্যবহার করা যায়।
  4. কোড সহজ ও পরিষ্কার করা: কমন এক্সেপশন মেকানিজম তৈরি করে কোড কমপ্লেক্সিটি কমানো যায়।

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 এর সীমাবদ্ধতা

  1. Checked Exception: Generics ব্যবহার করে শুধুমাত্র Checked Exception তৈরি করা সম্ভব।
  2. Type Erasure: Generics এর টাইপ ইনফরমেশন Type Erasure এর মাধ্যমে কম্পাইল টাইমে মুছে ফেলা হয়, যা কিছু ক্ষেত্রে সীমাবদ্ধতা আনতে পারে।
  3. Performance Impact: যদিও টাইপ ইনফরমেশন মুছে ফেলা হয়, তবে Generics ব্যবহার করলে কম্পাইল টাইমে কিছুটা জটিলতা যোগ হয়।

  1. Generic Exception Class টাইপ-সেইফ এবং পুনঃব্যবহারযোগ্য এক্সেপশন হ্যান্ডলিংয়ের জন্য একটি শক্তিশালী সমাধান।
  2. এটি কাস্টম এক্সেপশন ক্লাসে ডাইনামিক এবং টাইপড ডেটা সংযুক্ত করার সুযোগ দেয়।
  3. জাভার Type Erasure মেকানিজম ব্যবহার করে এটি কম্পাইল টাইমে টাইপ যাচাই করে, কিন্তু রানটাইম ওভারহেড ছাড়াই কার্যকর হয়।
  4. বড় এবং ডাইনামিক অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য এটি একটি কার্যকর টুল।
Content added By
Promotion

Are you sure to start over?

Loading...