본문 바로가기
수업(국비지원)/Java

[Java] chap9: 예외처리 - Exception Exam 1-3

by byeolsub 2023. 4. 16.

📌 Exception Exam1

package chap9;

import java.util.InputMismatchException;
import java.util.Scanner;

/*
 * 1. 화면에서 1부터 10까지의 숫자를 입력받아 숫자만큼 *출력하는 프로그램 작성하기
 * 입력값이 숫자가 아닌경우 InputMismatchException 예외가 발생됨.
 * 숫자만 입력하세요 메서지 출력하고, 다시 입력받도록 구현하기 
 * catch 블럭 scan.next(); 추가
 * 
 * 2. 입력값이 1 ~ 10사이의 숫자가 아닌경우 예외 발생
 */
public class Exam1 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int num;
		boolean endable = false;
		while(!endable) {
			try {
				System.out.println("1~10사이의 숫자를 입력하세요");
				num = scan.nextInt(); //InputMismatchException 
				if(num < 1 || num > 10) {
					throw new Exception("1에서 10사이의 숫자만 가능합니다."); //예외 강제 발생 
				}
				for(int i=0;i<num;i++) {
					System.out.print("*");
				}
				System.out.println();
				endable=true;
			} catch (InputMismatchException  e) {
				scan.next(); //잘못된 문자 입력.
				System.out.println("숫자만 입력하세요");
			} catch(Exception e) {
				// e.getMessage() : 1에서 10사이의 숫자만 가능합니다.
				System.out.println(e.getMessage());
			}
		}
		System.out.println("프로그램 종료");
	}
}

📌 Exception Exam2

package chap9;
/*   컴파일 오류 수정하기
 * 1. try catch 구문으로 예외 처리하기
 * 2. throws 구문으로 예외 처리하기 
 * 3. 예외처리 생략 가능하도록 RuntimeException 클래스의 하위클래스로 생성 
 */
class MyException extends RuntimeException { //=> RuntimeException 하위클래스
	int pos;
	MyException(String msg,int pos) {
		super(msg);
		this.pos = pos;
	}
	public int getPos() {
		return pos;
	}
	//getMessage() 메서드를 오버라이딩. => pos의 값을 출력하기.
//	@Override
//	public String getMessage() {
//		return super.getMessage() + ":"+pos + "라인";
//	}
	@Override
	public String getMessage() {
		return super.getMessage() + ":"+pos + "라인";
	}
	
}
public class Exam2 {
	public static void main(String[] args) {
		first();
	}
	private static void first() {
/* 1		
		try {
		   throw new MyException("예외 강제 발생");
		}catch(MyException e) {
			e.printStackTrace();
		}
*/	
		throw new MyException("예외 강제 발생",29); //예외처리 생략 가능 예외클래스로 생성
	}
}

📌 Exception Exam3

package chap9;

class MyException1 extends Exception {}
class MyException2 extends MyException1 {}
class MyException3 extends Exception {}

public class Exam3 {
	public static void main(String[] args) {
		try {
			if(false)
				throw new MyException3(); //Exception 예외처리 출력
			else	
			    throw new MyException2(); //MyException1 예외처리 출력
		} catch(MyException1 e) {
			System.out.println("MyException1 예외처리 ");
		} catch(Exception e) {
			System.out.println("Exception 예외처리 ");
		}
	}
}