사용자 정의 예외 클래스
- 자바에서 제공되는 예외 클래스 이외에 프로그래머가 직접 생성해야 하는 예외가 있을 수 있음
- 기존 예외 클래스 중 가장 유사한 예외 클래스에서 상속 받음
- 기본적으로 Exception 클래스를 상속하여 만들 수 있음
예제 코드
패스워드 입력 시 오류 처리
- 비밀번호는 null이 될 수 없음
- 비밀번호는 문자로만 구성될 수 없음 (숫자 혹은 특수문자 포함)
- 비밀번호는 5자 이상이어야 함
PasswordException.java
package ch10;
public class PasswordException extends Exception { // Exception을 상속받는 사용자 정의 예외 클래스
public PasswordException(String message) {
super(message);
}
}
PasswordTest.java
package ch10;
public class PasswordTest {
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) throws PasswordException {
if(password == null) { // password가 null일 경우
throw new PasswordException("비밀번호는 null 일 수 없습니다.");
}
else if(password.length() < 5) { // password가 5자 미만일 경우
throw new PasswordException("비밀번호는 5자 이상이어야 합니다.");
}
else if(password.matches("[a-zA-Z]+")) { // password가 문자로만 이루어져 있을 경우
throw new PasswordException("비밀번호에 숫자 또는 특수문자가 포함되어야 합니다.");
}
else {
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) {
System.out.println(e.getMessage());
}
password = "abcd";
try {
test.setPassword(password);
System.out.println("오류 없음2");
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
password = "abcdef";
try {
test.setPassword(password);
System.out.println("오류 없음3");
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
password = "abcde#";
try {
test.setPassword(password);
System.out.println("오류 없음4");
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
}
}
수행 결과
비밀번호는 null 일 수 없습니다.
비밀번호는 5자 이상이어야 합니다.
비밀번호에 숫자 또는 특수문자가 포함되어야 합니다.
오류 없음4
'Java & Kotlin' 카테고리의 다른 글
[Java 기능] 오류 로그 남기기 - java.util.logging.Logger 활용 (0) | 2022.02.16 |
---|---|
[Java 기능] 예외 처리와 미루기 (0) | 2022.02.15 |
[Java 기능] 예외 처리의 개념과 필요성 (0) | 2022.02.15 |