हमें जावा में अपना अपवाद बनाना चाहिए। अपनी अपवाद कक्षाएं लिखते समय निम्नलिखित बातों का ध्यान रखें
- सभी अपवाद थ्रोएबल के बच्चे होने चाहिए।
- अगर हम एक चेक अपवाद लिखना चाहते हैं जो स्वचालित रूप से हैंडल या डिक्लेयर नियम द्वारा लागू किया जाता है, तो हमें अपवाद वर्ग का विस्तार करना होगा।
- यदि हम रनटाइम अपवाद लिखना चाहते हैं, तो हमें रनटाइम अपवाद वर्ग का विस्तार करना होगा।
हम अपने स्वयं के अपवाद वर्ग को निम्नानुसार परिभाषित कर सकते हैं:
class MyException extends 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)