사용자 정의 예외 클래스 구현하기
- 자바에서 제공되는 예외 클래스외에 프로그래머가 직접 만들어야 하는 예외가 발생
- 기존 예외 클래스 중 가장 유사한 예외 클래스에서 상속 받아 사용자 정의 예외클래스를 만든다.
- 기본적으로 Exception 클래스를 상속하여 만듬
1
2
3
4
5
6
7
8
9
10
11
12
|
// 기존 IllegalArgumentException 상속
//public class PassWordException extends IllegalArgumentException{
public class PassWordException extends Exception{
public PassWordException(String message) {
// 상위 호출
super(message);
}
}
|
cs |
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
public class PassWordTest {
private String password;
public String getPassword() {
return password;
}
// 사용자 정의 Exception
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();
// 1.
String password = null;
// IllegalArgumentException 의 경우 런타임 Exception이므로 빨간줄 생성되지 않음
// 그래서 Exception으로 변경하여 try`catch를 감싸준다
try {
test.setPassword(password);
} catch (PassWordException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 2.
password = "abc";
try {
test.setPassword(password);
} catch (PassWordException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 3.
password = "abcde";
try {
test.setPassword(password);
} catch (PassWordException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 4.
password = "abcde4";
try {
test.setPassword(password);
} catch (PassWordException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
|
cs |
'OOP > Java' 카테고리의 다른 글
자바 입출력을 위한 I/O 스트림 (0) | 2022.05.19 |
---|---|
java.util.logging.Logger 활용 (0) | 2022.05.18 |
예외처리 (Exception)는 왜 하는가? (0) | 2022.05.11 |
연산 수행에 대한 구현 reduce() 연산 (0) | 2022.05.10 |
스트림(Stream) (0) | 2022.05.09 |