충분히 쌓여가는
이것이 자바다 11장 확인문제 본문
1. 예외에 대한 설명 중 틀린 것은 무엇입니까?
➊ 예외는 사용자의 잘못된 조작, 개발자의 잘못된 코딩으로 인한 프로그램 오류를 말한다.
➋ RuntimeException의 하위 예외는 컴파일러가 예외 처리 코드를 체크하지 않는다.
➌ 예외는 try-catch 블록을 사용해서 처리된다.
➍ 자바 표준예외만 프로그램에서 처리할 수 있다.
답: 4
해설:
사용자 예외처리도 됨
2. try-catch-finally 블록에 대한 설명 중 틀린 것은 무엇입니까?
➊ try { } 블록에는 예외가 발생할 수 있는 코드를 작성한다.
➋ catch { } 블록은 try { } 블록에서 발생한 예외를 처리하는 블록이다.
➌ try { } 블록에서 return 문을 사용하면 finally { } 블록은 실행되지 않는다.
➍ catch { } 블록은 예외의 종류별로 여러 개를 작성할 수 있다.
답: 3
3. throws에 대한 설명으로 틀린 것은 무엇입니까?
➊ 생성자나 메소드의 선언 끝 부분에 사용되어 내부에서 발생된 예외를 떠넘긴다.
➋ throws 뒤에는 떠넘겨야 할 예외를 쉼표(,)로 구분해서 기술한다.
➌ 모든 예외를 떠넘기기 위해 간단하게 throws Exception으로 작성할 수 있다.
➍ 새로운 예외를 발생시키기 위해 사용된다.
답: 4
4. throw에 대한 설명으로 틀린 것은 무엇입니까?
➊ 예외를 최초로 발생시키는 코드이다.
➋ 예외를 호출한 곳으로 떠넘기기 위해 메소드 선언부에 작성된다.
➌ throw로 발생된 예외는 일반적으로 생성자나 메소드 선언부에 throws로 떠넘겨진다.
➍ throw 키워드 뒤에는 예외 객체 생성 코드가 온다.
답: 2
5. 메소드가 다음과 같이 선언되어 있습니다. 잘못된 예외 처리를 선택하세요.
pulbic void method1() throws NumberFormatException, ClassNotFoundException { ... }
➊ try { method1(); } catch (Exception e) { }
➋ void method2 ( ) throws Exception { method1 ( ); }
➌ try { method1 ( ); }
catch (Exception e ) { }
catch (ClassNotFoundException e ) { }
➍ try { method1 ( ); }
catch (ClassNotFoundException e ) { } catch (NumberFormatException e ) { }
답: 3
해설:
상위 예외 객체(Exception)을 하위 예외 객체(ClassNotFoundException) 위에 작성하면 안됨
6. 다음 코드가 실행되었을 때 출력 결과를 작성해보세요.
String[] strArray = { "10", "2a" };
int value = 0;
for(int i=0; i<=2; i++) {
try {
value = Integer.parseInt(strArray[i]);
} catch(ArrayIndexOutOfBoundsException e) {
System.out.println("인덱스를 초과했음");
} catch(NumberFormatException e) {
System.out.println("숫자로 변환할 수 없음");
} finally {
System.out.println(value);
}
}
답:
10
숫자로 변환할 수 없음
10
인덱스를 초과했음
10
7. login ( ) 메소드에서 존재하지 않는 ID를 입력하면 NotExistIDException을 발생시키고, 잘못된 패스워드를 입력하면 WrongPasswordException을 발생시키려고 합니다.
다음 LoginExample 의 실행 결과를 보고 빈칸을 채워보세요. (다시 풀어보기)
public class NotExistIDException extends Exception {
public NotExistIDException() {}
public NotExistIDException(String message) {
____________________________________
}
}
public class WrongPasswordException extends Exception {
public WrongPasswordException() {}
public WrongPasswordException(String message) {
____________________________________
}
}
public class LoginExample {
public static void main(String[] args) {
try {
login("white", "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) _____________________ {
//id가 blue가 아니라면 NotExistIDException을 발생시킴
if(!id.equals("blue")) {
____________________________________________
}
//password가 12345가 아니라면 WrongPasswordException을 발생시킴
if(!password.equals("12345")) {
____________________________________________
}
}
답:
public class NotExistIDException extends Exception {
public NotExistIDException() {}
public NotExistIDException(String message) {
super(message);
}
}
public class WrongPasswordException extends Exception {
public WrongPasswordException() {}
public WrongPasswordException(String message) {
super(message);
}
}
public class LoginExample {
public static void main(String[] args) {
try {
login("white", "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 NotExistIDException, WrongPasswordException {
//id가 blue가 아니라면 NotExistIDException을 발생시킴
if(!id.equals("blue")) {
throw new NotExistIDException("아이디가 존재하지 않습니다.");
}
//password가 12345가 아니라면 WrongPasswordException을 발생시킴
if(!password.equals("12345")) {
throw new WrongPasswordException("패스워드가 틀립니다.");
}
}
}
'이것이 자바다 > 11 예외 처리' 카테고리의 다른 글
11.6 사용자 정의 예외 (0) | 2024.04.08 |
---|---|
11.5 예외 떠넘기기 - throws (0) | 2024.04.08 |
11.3 예외 종류에 따른 처리 - 예외 순서, 다중 catch (0) | 2024.04.08 |
11.2 예외 처리 코드 (0) | 2024.04.08 |
11.1 예외와 예외 클래스 (0) | 2024.04.08 |