티스토리 뷰

예외는 개발자의 잘못된 설계 또는 사용자의 잘못된 조작으로 인해 발생이 가능하다.

그렇기 때문에 사용자의 잘못된 조작에 대한 예외처리가 필요하다. (늘.. 사용자는 예상치 못한 방식으로 입력을 하고 ... 생각지도 못한 오류를 만들 때가 있다!)

그래서! 자바가 기본적으로 제공하는 예외처리가 아닌, 개발자가 직접 예외처리를 생성할 수 있다.


아래는 사용자가 8글자 이상의 사번을 입력했을 때, 예외를 발생시키는 개발코드이다.


[SnoCheckException.java]

 - 사용자가 정의한 예외클래스도 변수와 메소드 등을 가질 수 있지만, 일반적으로 기본 생성자와 예외 발생 시, 예외 메세지를 상위 클래스에게 전달하는 역할을

   수행하는 생성자를 가지는 것이 기본이다!

 - 그리고 일반적으로, 사용자가 정의한 예외클래스는 접미사에 Exception을 넣는다!

public class SnoCheckException extends Exception {
	/* 사용자가 정의한 예외 클래스 :: 일반적으로 Exception을 접미사로 붙이는 것이 기본! */
	public SnoCheckException() {
		/* 일반적으로 기본 생성자를 생성 */
	}
	
	public SnoCheckException(String message) {
		/* 예외발생 시, 예외 메세지를 상위 클래스를 호출하여 전달 */
		super(message);
	}
}

[UserException.java]

 - 사번의 길이를 체크하는 checkLength() 메소드가 있다. 이 메소드는 사번이 8글자를 넘으면, 예외 정의 클래스로 예외를 넘긴다!

   그리고 예외를 넘길 때, 메세지를 함께 전달한다! --> 그러면, 예외 정의 클래스는 상위 클래스인 Exception 클래스를 호출하여 메세지를 전달!

 - main 에 e.getMessage() 메소드를 통해 예외 메세지의 내용 확인 가능! 그리고 e.printStackTrace() 메소드를 통해 예외가 발생하는 영역 확인 가능!

public class UserException {
	private String sno;
	
	public UserException(String sno) {
		this.sno = sno;
	}
	
	private boolean checkLength() throws SnoCheckException{
		if(sno.length() > 8) {
			throw new SnoCheckException("사번 길이 초과! 현재 길이 : " + sno.length());
		}
		return true;
	}
	
	public static void main(String[] args) {
		UserException user = new UserException("100022840");
		try {
			System.out.println(user.checkLength() ? "정상사번" : "예외발생");
		} catch (SnoCheckException e) {
			/* 오류 메세지 출력! */
			System.out.println(e.getMessage());
			/* 오류 발생 경로 출력! */
			e.printStackTrace();
		}
	}
}


이제, 예외 정의 클래스를 이용해서 개발을 계속 진행해야 겠다! 끝!

'Java' 카테고리의 다른 글

Map Value 정렬 (오름차순, 내림차순)  (2) 2018.11.05
멀티스레드  (0) 2018.10.27
예외처리1 - 오류와 예외  (0) 2018.10.04
Java equals() & hashCode()  (3) 2018.10.04
Package & Import  (0) 2018.09.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함