ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - Custom Exception
    Language/Java 2022. 9. 29. 14:09

    Custom Exception

    Custom Exception 만들기

    기존에 정의된 예외 클래스 이외에 필요에 따라 새로운 예외 클래스를 정의하여 사용할 수 있다. 일반적으로 Exception 클래스를 상속받는 클래스를 만들지만, 필요에 따라서 알맞은 예외 클래스를 상속받아서 만든다. String 타입의 파라미터를 갖는 생성자는 상위 클래스의 생성자를 호출하여 예외 메시지를 넘겨준다.

     

    public class InSufficientBalanceException extends Exception {
    
        public InSufficientBalanceException(String message) {
            super(message);
        }
    }

    위 코드는 잔고 부족 예외를 사용자 정의 클래스로 정의한 것이다. InsufficientBalanceException은 Exception을 상속받기 때문에 컴파일러에 의해 체크되는 예외가 된다.

     

    public class Account {
        private long balance;
    
        public long getBalance() {
            return balance;
        }
    
        public void setBalance(long balance) {
            this.balance = balance;
        }
        
        public void deposit(int money) {
            balance += money;
        }
        
        public void withdraw(int money) throws InSufficientBalanceException {
            if (balance < money) {
                throw new InSufficientBalanceException("잔고 부족 : " + (money - balance) + "원이 모자랍니다.");
            }
            
            balance -= money;
        }
    }

    위 코드는 은행 계좌(Account) 클래스를 작성한 것이다. 출금(withdraw) 메서드에서 잔고(balance)와 출금액(money)을 비교해서 잔고가 부족하면 InSufficeBalanceException을 발생시키도록 하였다.

     

    public class Main {
    
        public static void main(String[] args) {
            Account account = new Account();
            
            account.deposit(1_000_000);
            System.out.println("예금액 : " + account.getBalance());
            
            try {
                account.withdraw(1_500_000);
            } catch(InSufficientBalanceException e) {
                System.out.println(e.getMessage());
                System.out.println();
                e.printStackTrace();
            }
        }
    }
    예금액 : 1000000
    잔고 부족 : 500000원이 모자랍니다.
    
    InSufficientBalanceException: 잔고 부족 : 500000원이 모자랍니다.
    	at Account.withdraw(Account.java:18)
    	at Main.main(Main.java:10)

    try 블록에서 예외가 발생하면 예외 객체는 catch 블록의 매개변수에서 참조하므로 매개변수를 이용하면 예외 객체의 정보를 알 수 있다.

    모든 예외 객체는 Exception을 상속받기 때문에 getMessage( )와 printStackTrace( ) 메서드 등을 예외 객체에서 호출할 수 있다.

    위 코드는 Account 클래스를 이용해서 예금과 출금을 하는 예제이다. 출금할 때 withdraw( ) 메서드를 이용하기 때문에 반드시 예외 처리를 해주어야 한다.


    출처

    https://dev-coco.tistory.com/18?category=962739 

     

    728x90

    'Language > Java' 카테고리의 다른 글

    Java - 람다식의 개념과 사용 방법  (0) 2022.11.29
    Java - 열거 타입(enum)  (0) 2022.11.29
    Java - 예외 처리  (0) 2022.09.29
    Java - Exception  (0) 2022.09.29
    Java - 추상 클래스 & 인터페이스  (0) 2022.09.21

    댓글

Designed by Tistory.