본문 바로가기
언어/JAVA

사용자 정의 예외 클래스

by step 1 2021. 5. 23.
반응형

사용자 정의 예외 클래스 구현

  • 자바에서 제공되는 예외 클래스외에 프로그래머가 직접 만들어야 하는 예외가 있을 수 있다
  • 기존 예외 클래스중 가장 유사한 예외 클래스에서 상속 받아 사용자 정의 예외 클래스를 만든다.
  • 기본적으로 Exception 클래스를 상속해서 만들 수 있음

패스워드에 대한 예외 처리 하기

  • 비밀번호는 null일 수 없다
  • 비밀번호의 길이는 5이상이다
  • 비밀번호는 문자로만 이루어져서는 안된다(하나이상의 숫자나 특수문자를 포함)

PassWordException

package ch57;

public class PassWordException extends Exception{

	public PassWordException (String message) {
		super(message);
	}
}

PassWordTest

package ch57;

public class PassWordTest {

	private String password;

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) throws PassWordException{

		if (password == null) {
			throw new PassWordException("비밀번호는 null일 수 없습니다"); 
		} 
		else if (password.length() < 5) {
			throw new PassWordException("비밀번호는 5자 이상이어야 합니다."); 
		} 
		else if (password.matches("[a-zA-Z]+")) {
			throw new PassWordException("비밀번호는 숫자나 특수문자를 포함해야 합니다."); 
		} 
		
		
		this.password = password;
	}
	
	public static void main(String[] args) {
		PassWordTest test = new PassWordTest();
		String password = null;
		try {
			test.setPassword(password);
			System.out.println("오류없음1");
		} catch (PassWordException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
		
		password = "abc";
		try {
			test.setPassword(password);
			System.out.println("오류없음2");
		} catch (PassWordException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
		
		password = "abcde";
		try {
			test.setPassword(password);
			System.out.println("오류없음3");
		} catch (PassWordException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
		
		password = "abcde1";
		try {
			test.setPassword(password);
			System.out.println("오류없음4");
		} catch (PassWordException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
		
	}
	
	
}

 

반응형