हमें Java में अपने स्वयं के अपवाद बनाने चाहिए। अपने स्वयं के अपवाद क्लास लिखते समय निम्नलिखित बिंदुओं को ध्यान में रखें:
- सभी अपवाद Throwable के चाइल्ड होने चाहिए।
- यदि हम एक चेक्ड अपवाद लिखना चाहते हैं जो हैंडल या डिक्लेयर नियम द्वारा स्वचालित रूप से लागू होता है, तो हमें Exception क्लास को एक्सटेंड करने की आवश्यकता है।
- यदि हम रनटाइम अपवाद लिखना चाहते हैं, तो हमें RuntimeException क्लास को एक्सटेंड करने की आवश्यकता है।
हम अपनी स्वयं की अपवाद क्लास को नीचे के रूप में परिभाषित कर सकते हैं:
class MyException extends Exception { }
हमें बस अपनी स्वयं की अपवाद क्लास बनाने के लिए Exception क्लास को एक्सटेंड करने की आवश्यकता है। इनको चेक्ड अपवाद माना जाता है। निम्नलिखित InsufficientFundsException क्लास एक यूजर-डिफाइंड अपवाद है जो Exception क्लास को एक्सटेंड करता है, जिससे यह एक चेक्ड अपवाद बन जाता है।
उदाहरण
// फाइल नाम InsufficientFundsException.java
import java.io.*;
class InsufficientFundsException extends Exception {
private double amount;
public InsufficientFundsException(double amount) {
this.amount = amount;
}
public double getAmount() {
return amount;
}
}
// फाइल नाम 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;
}
}
// फाइल नाम 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)