Custom Exception Class তৈরি করা Java প্রোগ্রামিং ভাষায় একটি অত্যন্ত গুরুত্বপূর্ণ বিষয়, যা আপনাকে আপনার অ্যাপ্লিকেশনে বিশেষ ধরণের ত্রুটি (error) বা পরিস্থিতি সঠিকভাবে হ্যান্ডল করার সুযোগ দেয়। যখন Java এর ডিফল্ট এক্সসেপশনগুলি আপনার অ্যাপ্লিকেশনের প্রয়োজন পূরণ করতে সক্ষম হয় না, তখন custom exception তৈরি করে আপনি নির্দিষ্ট পরিস্থিতি বা ত্রুটি হ্যান্ডলিংয়ে বেশি নিয়ন্ত্রণ পেতে পারেন।
এখানে Eclipse IDE তে Custom Exception Class তৈরি এবং ব্যবস্থাপনা করার জন্য প্রক্রিয়াটি বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
১. Custom Exception Class তৈরি করা
Java তে Custom Exception Class তৈরি করতে, আপনাকে Exception অথবা RuntimeException ক্লাস এক্সটেন্ড করতে হয়। এটি করার জন্য দুটি পদ্ধতি রয়েছে:
- Checked Exception: এটি Exception ক্লাস এক্সটেন্ড করে তৈরি করা হয় এবং এর ক্ষেত্রে ট্রাই-ক্যাচ ব্লক বা মেথড সিগনেচারে
throwsডিক্লেয়ারেশন ব্যবহার করতে হয়। - Unchecked Exception: এটি RuntimeException ক্লাস এক্সটেন্ড করে তৈরি করা হয়, যা স্বয়ংক্রিয়ভাবে রানটাইম ত্রুটি হিসেবে গণ্য হয় এবং এটি এক্সপ্লিসিট ট্রাই-ক্যাচ ব্লক ছাড়া ব্যবহৃত হয়।
Checked Exception Example:
// Custom Exception Class (Checked Exception)
public class InvalidAgeException extends Exception {
public InvalidAgeException(String message) {
super(message); // Passes the message to the parent class (Exception)
}
}
Unchecked Exception Example:
// Custom Exception Class (Unchecked Exception)
public class InvalidInputException extends RuntimeException {
public InvalidInputException(String message) {
super(message); // Passes the message to the parent class (RuntimeException)
}
}
এখানে:
InvalidAgeExceptionএকটি Checked Exception যেটি Exception ক্লাস এক্সটেন্ড করে।InvalidInputExceptionএকটি Unchecked Exception যেটি RuntimeException ক্লাস এক্সটেন্ড করে।
২. Custom Exception Class ব্যবহার করা
এখন যে custom exception ক্লাসটি তৈরি করেছি, সেটি ব্যবহার করা দেখানো হবে। এটি ব্যবহৃত হবে throw এবং throws কিওয়ার্ডের মাধ্যমে, যা ত্রুটি হ্যান্ডলিং এবং কাস্টম এক্সসেপশন ফেলে দেওয়ার প্রক্রিয়াকে সম্পন্ন করে।
Checked Exception Example (Method with throws):
public class AgeValidator {
public void validateAge(int age) throws InvalidAgeException {
if (age < 18) {
// Throw custom exception if age is less than 18
throw new InvalidAgeException("Age must be 18 or above!");
}
System.out.println("Age is valid");
}
public static void main(String[] args) {
AgeValidator validator = new AgeValidator();
try {
validator.validateAge(15); // This will throw InvalidAgeException
} catch (InvalidAgeException e) {
System.out.println("Caught exception: " + e.getMessage());
}
}
}
Unchecked Exception Example (Without throws):
public class InputValidator {
public void validateInput(String input) {
if (input == null || input.isEmpty()) {
// Throw custom unchecked exception if input is invalid
throw new InvalidInputException("Input cannot be null or empty!");
}
System.out.println("Valid input: " + input);
}
public static void main(String[] args) {
InputValidator validator = new InputValidator();
try {
validator.validateInput(""); // This will throw InvalidInputException
} catch (InvalidInputException e) {
System.out.println("Caught exception: " + e.getMessage());
}
}
}
ব্যাখ্যা:
- Checked Exception (InvalidAgeException):
- validateAge মেথডে throws InvalidAgeException ডিক্লেয়ারেশন ব্যবহার করা হয়েছে, কারণ
InvalidAgeExceptionএকটি checked exception। throw new InvalidAgeException("Age must be 18 or above!");এই লাইনে exception ফেলা হয়েছে।- মেথডটি try-catch ব্লকে রাখা হয়েছে যাতে exception ধরা যায় এবং যথাযথ মেসেজ প্রদর্শন করা যায়।
- validateAge মেথডে throws InvalidAgeException ডিক্লেয়ারেশন ব্যবহার করা হয়েছে, কারণ
- Unchecked Exception (InvalidInputException):
validateInputমেথডে RuntimeException-এর উপরে কাস্টম এক্সসেপশন তৈরি করা হয়েছে, যেটি Unchecked Exception।- throw new InvalidInputException("Input cannot be null or empty!"); লাইনে এক্সসেপশন ফেলা হয়েছে।
- যেহেতু এটি unchecked exception, তাই এটি throws ডিক্লেয়ারেশন ছাড়া ব্যবহার করা যায় এবং স্বয়ংক্রিয়ভাবে
try-catchব্লকের মাধ্যমে হ্যান্ডল করা হয়।
৩. Custom Exception Class এর অতিরিক্ত বৈশিষ্ট্য
একটি কাস্টম এক্সসেপশনের সাথে আরও কিছু অতিরিক্ত বৈশিষ্ট্য যোগ করা যেতে পারে, যেমন:
- Logging: Exception এর মধ্যে লগ মেসেজ সংযুক্ত করা।
- Error Codes: Exception এর সাথে কাস্টম error কোড পাঠানো।
- Stack Tracing: Exception এর মাধ্যমে আরও বিস্তারিত stack trace দেয়া।
Custom Exception with Error Code Example:
public class InvalidInputException extends RuntimeException {
private int errorCode;
public InvalidInputException(String message, int errorCode) {
super(message);
this.errorCode = errorCode;
}
public int getErrorCode() {
return errorCode;
}
}
public class InputValidator {
public void validateInput(String input) {
if (input == null || input.isEmpty()) {
// Throw custom unchecked exception with error code
throw new InvalidInputException("Input cannot be null or empty!", 1001);
}
System.out.println("Valid input: " + input);
}
public static void main(String[] args) {
InputValidator validator = new InputValidator();
try {
validator.validateInput(""); // This will throw InvalidInputException
} catch (InvalidInputException e) {
System.out.println("Caught exception: " + e.getMessage());
System.out.println("Error Code: " + e.getErrorCode());
}
}
}
এখানে, InvalidInputException এর মধ্যে একটি errorCode যুক্ত করা হয়েছে, যা RuntimeException থেকে উত্তরাধিকারী। এক্সসেপশন ফেলে দেয়ার সময় error কোড সহ মেসেজ প্রদান করা হয়েছে, এবং তারপর এটি getErrorCode() মেথডের মাধ্যমে অ্যাক্সেস করা হয়েছে।
৪. Custom Exception Class এর উপকারিতা
- Readability: কাস্টম এক্সসেপশন আপনাকে বিশেষ ত্রুটি সনাক্তকরণের জন্য সুনির্দিষ্ট মেসেজ এবং error কোড প্রদান করতে সাহায্য করে, যার ফলে কোড পড়তে সুবিধা হয়।
- Code Maintenance: আপনার অ্যাপ্লিকেশনে যেকোনো একটি নির্দিষ্ট ত্রুটি বা পরিস্থিতির জন্য কাস্টম এক্সসেপশন তৈরি করলে, কোড পরিচালনা সহজ হয় এবং ভবিষ্যতে নতুন ফিচার যোগ করার সময় ত্রুটি মোকাবেলা করা সহজ হয়।
- Error Handling: কাস্টম এক্সসেপশন তৈরি করে আপনি একটি নির্দিষ্ট ত্রুটি ব্যবস্থাপনার কৌশল তৈরি করতে পারেন এবং এটি আপনার অ্যাপ্লিকেশনকে আরও নিরাপদ ও স্থিতিস্থাপক করে।
সারাংশ
Custom Exception Class তৈরি করা Java তে খুবই গুরুত্বপূর্ণ যখন আপনি ডিফল্ট এক্সসেপশনগুলির মাধ্যমে ত্রুটি মোকাবেলা করতে সক্ষম হন না এবং আপনার অ্যাপ্লিকেশনের জন্য নির্দিষ্ট ত্রুটি হ্যান্ডলিং করতে চান। Checked Exception এবং Unchecked Exception দুটি ধরনের কাস্টম এক্সসেপশন তৈরি করা যেতে পারে। আপনি throw এবং throws কিওয়ার্ড ব্যবহার করে কাস্টম এক্সসেপশন ফেলে দিতে পারেন এবং এর মাধ্যমে ত্রুটি হ্যান্ডলিং সুনির্দিষ্টভাবে পরিচালনা করতে পারেন।
Read more