우리는 자바에서 우리 자신의 예외를 만들어야 합니다. 자체 예외 클래스를 작성할 때 다음 사항을 염두에 두십시오.
- 모든 예외는 Throwable의 자식이어야 합니다.
- 핸들 또는 선언 규칙에 의해 자동으로 적용되는 확인된 예외를 작성하려면 예외 클래스를 확장해야 합니다.
- 런타임 예외를 작성하려면 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)