컴퓨터공학 💻 도서관📚
Part2. 6-10 사용자 정의 예외 클래스와 그 활용 본문
사용자 정의 예외 클래스 구현하기
- 자바에서 제공되는 예외 클래스 외에 프로그래머가 직접 만들어야 하는 예외가 있을 수 있음
- 기존 예외 클래스중 가장 유사한 예외 클래스에서 상속 받아 사용자 정의 예외 클래스를 만든다.
- 기본적으로 Exception 클래스를 상속해서 만들 수 있음
(우리가 시스템을 개발하다 보면 Exception을 실제로 만드는 경우가 많이 있다.
모든 Exception이 우리 입맛에 딱 맞지 않기에 필요한 경우에는 Exception을 만들어서
그 Exception을 핸들링하고 Exception에 대한 로그를 남겨서 안정적인 시스템을 구현한다.)
패스워드에 대한 예외 처리 하기
- 패스워드를 입력할 때 다음과 같은 경우 오류처리를 합니다.
- 비밀번호는 null일 수 없습니다.
- 비밀번호의 길이는 5이상입니다.
- 비밀번호는 문자로만 이루어져서는 안됩니다. (하나 이상의 숫자나 특수문자를 포함)
(이런 Exception은 자바에서 제공되지 않았기에 직접 Exception을 만든다.)
// IllegalArgumentException 은 argument(함수인자)에 오류가 있을 때 런타임 익셉션으로 사용하는 것이다.
public class PasswordException extends IllegalArgumentException{ // 상속받은 클래스로 Exception 구현
public PasswordException(String message) {
super(message); // 상위 클래스 꺼 활용
}
}
(아니 PasswordException 클래스에서 if , else if 정의하면 안 되나??.... 가독성이 좀 떨어지는데.... 일단 넘어가자)
public class PasswordTest {
private String password;
public String getPassword(){
return password;
}
// setPassword 에서는 예외 처리를 미룬다(throws 한다). 메서드를 사용하는 쪽에서 try-catch 처리를 해라
public void setPassword(String password) throws PasswordException{
// 이런 경우에 setPassword는 PasswordException이 발생을 한다.
if(password == null){ // null 인 경우
throw new PasswordException("비밀번호는 null 일 수 없습니다"); // throw
}
else if( password.length() < 5){ // 5자 미만인 경우
throw new PasswordException("비밀번호는 5자 이상이어야 합니다.");
}
else if (password.matches("[a-zA-Z]+")){ // 정규식, String이 a부터 z 또는 A부터 Z로만 반복되는 것과 매치가 된다.
throw new PasswordException("비밀번호는 숫자나 특수문자를 포함해야 합니다.");
}
this.password = password; // 정상인 경우
}
public static void main(String[] args) {
PasswordTest test = new PasswordTest();
String password = null; // null 인 경우
try {
test.setPassword(password);
System.out.println("오류 없음1"); // 오류가 발생하지 않으면 이렇게 하고
} catch (PasswordException e) {
System.out.println(e.getMessage()); // 오류가 발생하면 이렇게 해라
}
password = "abcd"; // 5자 미만인 경우
try {
test.setPassword(password);
System.out.println("오류 없음2");
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
password = "abcde"; // 문자로만 되어 있는 경우
try {
test.setPassword(password);
System.out.println("오류 없음3");
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
password = "abcde#1"; // 정상인 경우
try {
test.setPassword(password);
System.out.println("오류 없음4");
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
}
}
'✅🌲강의 복습 노트 > 패캠 JavaSpring 강의,코드 복습' 카테고리의 다른 글
Part2. 6-12 자바의 입출력을 위한 I/O 스트림 (통합 연산 도구) (0) | 2025.08.21 |
---|---|
Part2. 6-11 오류의 로그를 남기기 - java.util.logging.Logger 활용 (이해 잘 안 됨...) (3) | 2025.08.15 |
Part2. 6-9 예외 처리하기와 미루기 (5) | 2025.08.14 |
Part2. 6-8 예외 처리는 왜 해야 하나? 자바에서 제공되는 클래스들 (2) | 2025.08.08 |
Part2. 6-7 스트림을 활용하여 패키지 여행 비용 계산하기 (2) | 2025.07.29 |
Comments