본문 바로가기

Java/본격 Java 기타클래스

[Java] 입출금 계좌에서 예외처리

계좌 출금에 대한 실패 예외 클래스를 만든다.

.

.

package failException;

public class FailException extends Exception {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	long amount; // 출금시 모자라는 금액

	public FailException(long amount) {
		this.amount = amount;
	}

	public long getAmount() {
		return amount;
	}

}

.

.

그리고 계좌에 대한 입출금 클래스를 만든다.

.

.

package failException;

public class CheckAccount {
	private long balance;
	private int number;

	public CheckAccount(long balance, int number) {
		this.balance = balance;
		this.number = number;
	}

	public void deposit(long amount) {
		System.out.println("입금 전 잔액 : " + balance + "원");
		balance += amount;
		System.out.println("입금 금액 : " + amount + "원");
		System.out.println("----------------------------");
		System.out.println("현재 잔액 : " + balance + "원\n");
	}

	public void withdraw(long amount) throws FailException {
		System.out.println("출금 전 잔액 : " + balance + "원");
		if (balance >= amount) {
			balance -= amount;
			System.out.println("출금 금액 : " + amount + "원");
			System.out.println("----------------------------");
			System.out.println("현재 잔액 : " + balance + "원\n");
		} else {
			FailException e = new FailException(amount - balance);
			throw e;
		}
	}

	public long getBalance() {
		return balance;
	}

	public int getNumber() {
		return number;
	}

}

.

.

그리고 실제로 입출금 계좌를 테스트해본다

.

.

package failException;

public class TestAccount {

	public static void main(String[] args) {
		CheckAccount chAcc = new CheckAccount(10000, 1000);
		try {
			chAcc.deposit(5000);
			chAcc.withdraw(5000);
			chAcc.withdraw(23000); // 잔액보다 많은 금액을 출금
		} catch (FailException e) {
			System.out.println("출금 잔액이 " + e.getAmount() + "원이 부족합니다.");
		}
		
		System.out.println("프로그램 종료");

	}

}

.

.

728x90
반응형

'Java > 본격 Java 기타클래스' 카테고리의 다른 글

[Java] 고의로 예외 만들기  (0) 2020.07.15
[Java] 예외처리 실습  (0) 2020.07.15
[Java] Anonymous의 활용법  (0) 2020.07.15
[Java] Anonymous란?  (0) 2020.07.15
[Java] StringTokenizer 클래스  (0) 2020.07.02