[Java] 사용자 정의 예외 클래스

13048 단어 JavaJava

사용자 정의 예외 클래스

  • 프로그래밍을 하다 보면 자바에서 제공하는 예외 클래스외에 직접 만들어야하는 예외들이 존재할 것이다. 이러한 경우 프로그래머들은 예외 클래스를 직접 만들어 사용한다.

  • 사용자 정의 예외 클래스는 기존 예외 클래스중에서 가장 유사한 예외 클래스를 상속받아 만든다.

  • 기본적으로는 Exception 클래스를 상속해서 만들 수 있다.


👨🏻‍💻 Example Code

PasswordException.java

package ch10;

public class PasswordException extends Exception{
	// exception을 상속
	public PasswordException(String message) {
		super(message);
	}
}

PasswordTest.java

public class PasswordTest {
	
	private String password;
	
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) throws PasswordException {
		// 이와 같이 exception을 만들고 상황에 따른 exception을 발생시킬 수 있다.
		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();
		
        //setPassword에서 Exception을 throws했기에 실행 코드에서 try-catch를 통해 예외 처리를 해야한다.
		// password가 null인 것을 test
		String password = null;
		try {
			test.setPassword(password);
			System.out.println("오류없음1");
		} catch (PasswordException e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage());
		}
		
		// 문자열이 5개 미만이고 특수문자가 없는 것 테스트
		password = "abc";
		try {
			test.setPassword(password);
			System.out.println("오류없음2");
		} catch (PasswordException e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage());
		}
		
		// 문자열이 5개 이상이지만 특수문자가 없는 것 테스트
		password = "abcde";
		try {
			test.setPassword(password);
			System.out.println("오류없음3");
		} catch (PasswordException e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage());
		}
		
		// 정상적인 것 테스트
		password = "abcde1#";
		try {
			test.setPassword(password);
			System.out.println("오류없음4");
		} catch (PasswordException e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage());
		}
	}
}

Result
비밀번호는 null일 수 없습니다.
비밀번호는 5자 이상이어야 합니다.
비밀번호는 숫자나 특수문자를 포함해야 합니다.
오류없음4



Reference

좋은 웹페이지 즐겨찾기