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

জাভাতে কাস্টম এক্সসেপশন (Custom Exceptions)

আপনি জাভাতে নিজস্ব এক্সসেপশন তৈরি করতে পারেন এবং এগুলোকে ব্যবহারকারী-সংজ্ঞায়িত এক্সসেপশন বা কাস্টম এক্সসেপশন বলা হয়।

ব্যবহারকারী-সংজ্ঞায়িত এক্সসেপশন তৈরি করতে উপরে উল্লিখিত ক্লাসগুলির যেকোনো একটি এক্সটেন্ড করুন। মেসেজ প্রদর্শন করতে toString() মেথড ওভাররাইড করুন অথবা, স্ট্রিং ফরম্যাটে মেসেজ পাস করে সুপারক্লাসের প্যারামিটারাইজড কনস্ট্রাক্টর কল করুন।

MyException(String msg){ 
    super(msg); 
} 
অথবা, 
public String toString(){ 
    return " MyException [আপনার এক্সসেপশনের মেসেজ]"; 
}

তারপর, অন্যান্য ক্লাসে যেখানে এই এক্সসেপশন উত্থাপন করার দরকার, তৈরি করা কাস্টম এক্সসেপশন ক্লাসের একটি অবজেক্ট তৈরি করুন এবং, throw কীওয়ার্ড ব্যবহার করে এক্সসেপশন থ্রো করুন।

MyException ex = new MyException(); 
If(condition...){ 
    throw ex; 
}

কাস্টম চেকড এবং কাস্টম আনচেকড

  • সকল এক্সসেপশন অবশ্যই Throwable-এর চাইল্ড হতে হবে।

  • আপনি যদি একটি চেকড এক্সসেপশন লিখতে চান যা হ্যান্ডেল অর ডিক্লেयर নিয়ম দ্বারা স্বয়ংক্রিয়ভাবে এনফোর্স করা হয়, তবে আপনাকে Exception ক্লাস এক্সটেন্ড করতে হবে।

  • আপনি যদি একটি রানটাইম এক্সসেপশন লিখতে চান, তবে আপনাকে RuntimeException ক্লাস এক্সটেন্ড করতে হবে।

উদাহরণ: কাস্টম চেকড এক্সসেপশন

নিচের জাভা প্রোগ্রামটি কাস্টম চেকড এক্সসেপশন তৈরি করার পদ্ধতি প্রদর্শন করে।

import java.util.Scanner; 

class NotProperNameException extends Exception { 
    NotProperNameException(String msg){ 
        super(msg); 
    } 
} 

public class CustomCheckedException { 
    private String name; 
    private int age; 
    
    public static boolean containsAlphabet(String name) { 
        for (int i = 0; i < name.length(); i++) { 
            char ch = name.charAt(i); 
            if (!(ch >= 'a' && ch <= 'z')) { 
                return false; 
            } 
        } 
        return true; 
    } 
    
    public CustomCheckedException(String name, int age){ 
        if(!containsAlphabet(name) && name != null) { 
            String msg = "Improper name (Should contain only characters between a to z (all small))"; 
            NotProperNameException exName = new NotProperNameException(msg); 
            throw exName; 
        } 
        this.name = name; 
        this.age = age; 
    } 
    
    public void display(){ 
        System.out.println("Name of the Student: " + this.name); 
        System.out.println("Age of the Student: " + this.age); 
    } 
    
    public static void main(String args[]) { 
        Scanner sc = new Scanner(System.in); 
        System.out.println("Enter the name of the person: "); 
        String name = sc.next(); 
        System.out.println("Enter the age of the person: "); 
        int age = sc.nextInt(); 
        
        CustomCheckedException obj = new CustomCheckedException(name, age); 
        obj.display(); 
    } 
}

কম্পাইল-টাইম এক্সসেপশন

উপরোক্ত প্রোগ্রাম কম্পাইল করার সময় নিচের এক্সসেপশন জেনারেট করে।

CustomCheckedException.java:24: error: unreported exception NotProperNameException; must be caught or declared to be thrown 
    throw exName; 
    ^ 
1 error

উদাহরণ: কাস্টম আনচেকড এক্সসেপশন

আপনি যদি আপনার কাস্টম এক্সসেপশন যে ক্লাস থেকে ইনহেরিট করে সেটাকে RuntimeException এ পরিবর্তন করেন তবে এটি রানটাইমে থ্রো হবে।

class NotProperNameException extends RuntimeException { 
    NotProperNameException(String msg){ 
        super(msg); 
    } 
}

আপনি যদি পূর্বের প্রোগ্রামটি NotProperNameException ক্লাসকে উপরের কোড দিয়ে রিপ্লেস করে রান করেন, তবে নিচের রানটাইম এক্সসেপশন জেনারেট হবে।

রানটাইম এক্সসেপশন

Enter the name of the person: Krishna1234 
Enter the age of the person: 20 
Exception in thread "main" july_set3.NotProperNameException: Improper name (Should contain only characters between a to z (all small)) 
    at july_set3.CustomCheckedException.(CustomCheckedException.java:25) 
    at july_set3.CustomCheckedException.main(CustomCheckedException.java:41)
  1. রুবিতে কাস্টোম এক্সেপশন মাস্টার করুন: ধাপে ধাপে গাইড

  2. রুবিতে এক্সেপশন রেসকিউ: নিরাপদ এরর হ্যান্ডলিং টেকনিক

  3. রুবি এক্সেপশন মাস্টার করুন: আত্মবিশ্বাসের সাথে এরর হ্যান্ডলিং

  4. জাভা এক্সেপশন হ্যান্ডলিং মাস্টার করুন: সম्पূর্ণ গাইড