জাভাতে আমাদের নিজস্ব এক্সেপশন তৈরি করা উচিত। নিজস্ব এক্সেপশন ক্লাস লিখতে समय নিচের পয়েন্টগুলো মনে রাখুন:
- সকল এক্সেপশন অবশ্যই Throwable-এর চাইল্ড হতে হবে।
- যদি আমরা একটি চেকড এক্সেপশন লিখতে চাই যা Handle or Declare Rule দ্বারা অটোমেটিক্যালি এনফোর্স হবে, তবে Exception ক্লাস এক্সটেন্ড করতে হবে।
- যদি আমরা একটি রানটাইম এক্সেপশন লিখতে চাই, তবে RuntimeException ক্লাস এক্সটেন্ড করতে হবে।
আমরা নিচের মতো নিজস্ব Exception ক্লাস ডিফাইন করতে পারি:
class MyException extends Exception { }
আমাদের শুধু Exception ক্লাস এক্সটেন্ড করতে হবে নিজস্ব Exception ক্লাস তৈরি করতে। এগুলো চেকড এক্সেপশন হিসেবে বিবেচিত হয়। নিচের InsufficientFundsException ক্লাস একটি ইউজার-ডিফাইনড এক্সেপশন যা Exception ক্লাস এক্সটেন্ড করে, এটিকে একটি চেকড এক্সেপশন বানাতে।
উদাহরণ
// File Name InsufficientFundsException.java
import java.io.*;
class InsufficientFundsException extends Exception {
private double amount;
public InsufficientFundsException(double amount) {
this.amount = amount;
}
public double getAmount() {
return amount;
}
}
// File Name CheckingAccount.java
class CheckingAccount {
private double balance;
private int number;
public CheckingAccount(int number) {
this.number = number;
}
public void deposit(double amount) {
balance += amount;
}
public void withdraw(double amount) throws InsufficientFundsException {
if(amount <= balance) {
balance -= amount;
} else {
double needs = amount - balance;
throw new InsufficientFundsException(needs);
}
}
public double getBalance() {
return balance;
}
public int getNumber() {
return number;
}
}
// File Name BankDemo.java
public class BankDemo {
public static void main(String [] args) {
CheckingAccount c = new CheckingAccount(101);
System.out.println("Depositing $500...");
c.deposit(500.00);
try {
System.out.println("\nWithdrawing $100...");
c.withdraw(100.00);
System.out.println("\nWithdrawing $600...");
c.withdraw(600.00);
} catch(InsufficientFundsException e) {
System.out.println("Sorry, but you are short $" + e.getAmount());
e.printStackTrace();
}
}
}
আউটপুট
Depositing $500...
Withdrawing $100...
Withdrawing $600...
Sorry, but you are short $200.0
InsufficientFundsException
at CheckingAccount.withdraw(BankDemo.java:32)
at BankDemo.main(BankDemo.java:53)