문제
로그인 기능을 Member 클래스의 login() 메소드에서 구현하려고 한다. 존재하지 않는 ID를 입력했을 경우 NotExistIDException을 발생시키고, 잘못된 패스워드를 입력했을 경우 WrongPasswordException을 발생시키려고 한다.
LoginExample의 실행 결과를 보고 코드를 작성해보자.
LoginExample 실행결과
[NoExistIDException.java]
1
2
3
4
5
6
7
|
public class NoExistIDException extends Exception{
public NoExistIDException () {}
public NoExistIDException (String message) {
super(message);
}
}
|
cs |
사용자 정의 예외 클래스 선언
1. 사용자 정의 예외 클래스의 이름은 Exception으로 끝나는게 좋다.
2. 사용자 정의 예외 클래스도 필드, 생성자, 메소드 선언들을 포함할 수 있지만
대부분 생성자 선언만을 포함한다.
3. 생성자는 두 개를 선언하는게 일반적이다.
1) 매개 변수가 없는 기본 생성자
2) 예외 발생 원인(예외 메세지: 아이디가 존재하지 않습니다.)을 전달하기 위해
String 타입의 매개 변수를 갖는 생성자
4. String 타입의 매개 변수를 갖는 생성자는 상위 클래스의 생성자를 호출(super(message);)
하여 메세지를 넘겨준다.
[WrongPasswordException.java]
1
2
3
4
5
6
|
public class WrongPasswordException extends Exception {
public WrongPasswordException () {}
public WrongPasswordException (String message) {
super(message);
}
}
|
cs |
[LoginExample.java]
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
|
public class LoginExample {
public static void main(String[] args) {
try {
login("write","12345");
} catch (Exception e) {
System.out.println(e.getMessage());
}
try {
login("blue","54321");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public static void login (String id , String password) throws Exception {
//id가 "blue"가 아니라면 NoExistIdException 발생시킴
if (!id.equals("blue")) {
throw new NoExistIDException("아이디가 존재하지 않습니다.");
}
//password가 "12345"가 아니라면 WrongPasswordException을 발생시킴
if (!password.equals("12345")) {
throw new WrongPasswordException("패스워드가 틀립니다.");
}
}
}
|
cs |
1. throw 키워드를 통해 예외를 발생시킨다.
2. 예외의 내용을 Exception 객체에 넘겨주기 위해 String 매개변수를 갖는 생성자를 부른다.
3. login() 메소드 안에서 예외가 발생하면 그 예외가 생성자의 super();에 의해 Exception으로 넘어가고 login() 메소드가 호출된 곳(try {} 내부)에서 해당 예외를 발생시킨다.
4. 해당 예외를 catch문에서 잡아 Exception 클래스 객체 e의 getMessage()메소드를 통해 예외 내용을 출력시킨다.
'IT > 연습문제' 카테고리의 다른 글
이것이 자바다 12장 연습문제 : 멀티 스레드 (0) | 2020.09.20 |
---|---|
이것이 자바다 11장 연습문제 : 기본API 클래스 (0) | 2020.09.17 |
자바 연습문제 : 인터페이스와 구현 클래스 작성 (0) | 2020.09.09 |
자바 연습문제 : Up&Down 게임 (0) | 2020.09.08 |
클래스 연습문제 풀어보기(계좌관리 프로그램) (0) | 2020.09.07 |