한모로그 2023. 1. 26. 20:14

사용자 정의 예외

  • 표준 라이브러리에는 없어 직접 정의하는 예외 클래스
  • 일반 예외는 Exception의 자식 클래스로 선언
  • 실행 예외는 RuntimeException의 자식 클래스로 선언


    출처, 이것이 자바다


package ch11.sec06;

/*
 * 사용자 정의 예외클래스 : 업무
 */

public class InsufficientException extends Exception {

    //생성자 선언
    public InsufficientException() {

    }

    public InsufficientException(String message) {
        super(message);
    }
}

예외 발생시키기

  • throw 키워드와 함께 예외 객체를 제공해 사용자 정의 예외를 직접 코드에서 발생시킬 수 있음
  • 예외의 원인에 해당하는 메시지를 제공하려면 생성자 매개값으로 전달


    출처, 이것이 자바다


package ch11.sec06;

/*
 * 은행의 뱅킹프로그램에서 잔고보다 더 많은 출금요청이 들어온 경우 잔고부족 예외를 발생하는 예제.
 */

//고객 계좌
public class Account {
    //잔고액
    private long balance;

    public Account() {}

    public long getBalance() {
        return balance;
    }

    //예금
    public void deposit(int money) {
        balance += money;
    }

    //요청 금액
    public void withdraw(int money) throws InsufficientException {
        if(balance < money) {
            //예외발생하는 구문.
            throw new InsufficientException("잔고 부족: " + (money-balance) +  "원" + " 부족함");
        }
        balance -= money;
    }
}

package ch11.sec06;

public class AccountExample {

    public static void main(String[] args) {
        Account account = new Account();

        //예금하기
        account.deposit(10000);
        System.out.println("예금액: " + account.getBalance() + "원");

        //출금하기
        try {
            account.withdraw(30000);
        } catch(InsufficientException e) {
            System.out.println(e.getMessage());
        }
    }

}