본문 바로가기

Java

예외 : 정보 얻기 printStackTrace(), getMessage()

Exception에 메소드가 있다. 예외의 정보를 가져올 수 있다.

printStackTrace();

- 처음 호출 한 곳 부터 에러 발생한 끝까지 들어간 내용 그대로 보여준다. 말 그대로 Stack을 trace 했으니, Stack에 쌓여있는 모든 함수들을 그대로 뿌려준다.

getMessage();

예외 메세지만 간략하게 보여준다.

다음과 같이 Exception과 Account 클래스를 정의했다고 볼 때

public class BalanceException extends Exception{
	public BalanceException(){}
	public BalanceException(String message){
		super(message);
	}
}
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 BalanceException{
		if(balance< money){
			throw new BalanceException("잔고 부족"+(money-balance));
		}
	}
}

e.printStackTrace()가 찍힌 경우

public class AccountExample{
	public static void main(String[] args){
		Account account = new Account();
		//예금하기
		account.deposit(1000);
		System.out.println(account.getBalance());

		//출금하기
		try{
			account.withdraw(3000);
		}catch(BalanceException e){
			e.printStackTrace();
		}
	}
}

e.getMessage()를 쓴 경우

public class AccountExample{
	public static void main(String[] args){
		Account account = new Account();
		//예금하기
		account.deposit(1000);
		System.out.println(account.getBalance());

		//출금하기
		try{
			account.withdraw(3000);
		}catch(BalanceException e){
			String msg = e.getMessage();
			System.out.println(msg);
		}
	}
}

전달했었던 message가 뜨는 걸 확인할 수 있다.

public void withdraw(int money) throws BalanceException{
		if(balance< money){
			throw new BalanceException("잔고 부족"+(money-balance));
		}
	}
반응형

'Java' 카테고리의 다른 글

예외 : 사용자 정의 예외와 예외 발생  (0) 2021.03.25
예외 : 예외 떠넘기기  (0) 2021.03.25
예외 : try-with-resource  (0) 2021.03.25
예외 : try-catch-finally  (0) 2021.03.25
예외 : 예외와 예외 클래스  (0) 2021.03.25