(1) 사용자 정의 예외 클래스 선언

Exception <- 컴파일러에 의해 체크 되는 예외

RuntimeException <- 컴파일러가 체크 안함

 

 

일반 예외의 경우(컴파일러가 체크함) Exception을 상속받아 구현하면 되고,

실행 예외의 경우(컴파일러가 체크 안함) RuntimeException을 상속받아 구현 하면 된다.

보통 매개 변수가 없는 생성자와 예외 발생 원인(메시지)를 전달하기 위해 String 파라미터를 갖는 생성자 2개를 선언한다.

 

 

- 기본 사용법 -

 

- 사용 예 (RuntimeException 방법으로 함)-

 

 

 

 

 

 

 

 

(2) 예외 발생 시키기

- 기본 사용법 -

 

- 사용 예 -

은행 계좌(account) 클래스를 작성한 것입니다.

출금(withdraw)메서드에서 잔고(balance)와 출금액을 비교해서 잔고가 부족하면 BalanceInsufficientExceptioin 을 발생시키도록 했습니다.

 

 

 

 

 

 

 

 

 

(3) 예외 정보 얻기

try 블록에서 예외가 발생하면 예외 객체는 catch 블록의 매개 변수에서 참조하게 되므로 매개 변수를 이용하면 예외 객체의 정보를 알 수 있습니다. 모든 예외 객체는 Exception을 상속하기 때문에 메서드를 예외 객체에서 호출 할 수 있습니다.

그 중에서도 가장 많이 사용되는 getMessage() 와 printStackTrace()가 있습니다.

 

 

 

 

- 사용 예 -

다음 예제는 Account 클래스를 이용해서 예금과 출금을 합니다. 출금할 때 withdraw() 메서드를 이용하므로 예외 처리가 꼭 필요합니다. 예외 처리 코드에서 BalanceInsufficientException 객체의 getMessage() 메서드와 printStackTrace() 메서드로 예외에 대한 정보를 얻어내고 있습니다.

 

 

e.getMessage() <- 예외가 가지고 있는 메시지 얻기

e.printStackTrace() <- 예외의 발생 결로를 추적