package ex0727;

import java.util.Scanner;

public class Ex106_finally {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String[] ss = new String[3];
		int idx;
		String s;
		
		try {
			idx = 0;
			System.out.println("문자열 입력[종료:입력하지 않고 엔터]...");
			while( (s = sc.nextLine()).length() != 0 ) {
				ss[idx++] = s;
				System.out.print("문자열 입력 : "); // 예외 발생하면 실행 되지 않는다.
			}
		} catch (ArrayIndexOutOfBoundsException e) {
			// ArrayIndexOutOfBoundsException : unchecked exception
				// 배열의 첨자가 벗어난 경우 발생하는 예외
			System.out.println("입력을 초과 했습니다...");
		} finally {
			System.out.println("예외 발생 여부와 상관 없이 실행 합니다.");
			sc.close();
		}
		
		System.out.println("\n입력 문자열...");
		for(String str : ss) {
			System.out.println(str);
		}

	}
}

package ex0727;

import java.util.Scanner;

public class Ex107_finally {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a, b, c;

		try {
			System.out.print("두정수 ? ");
			a = sc.nextInt();
			b = sc.nextInt();

			c = a / b;
			System.out.println(a + "/" + b + "=" + c);
		} finally {
			System.out.println("예외발생 여부와 상관 없이 실행 됩니다.");
			sc.close();
		}

		// 예외가 발생하면 실행하지 않는다.
		System.out.println("end...");

	}
}

package ex0727;

public class Ex108_finally {
	public static void main(String[] args) {
		// divide(10, 5);
		// divide(10, 0);
		divide(10, -5);

	}

	public static void divide(int a, int b) {
		try {
			if (b < 0) {
				System.out.println("음수를 입력 했습니다.");
				return;
			}

			int c = a / b;
			System.out.println(a + "/" + b + "=" + c);

		} catch (ArithmeticException e) {
			System.out.println("0으로 나눌 수 없습니다.");
		} finally {
			// System.exit(0);// 프로그램 강제 종료를 만났을 때만 실행하지 않는다.
			System.out.println("finally 블럭은 return을 만나도 실행된다.");
		}

		System.out.println("end...");
	}
}

+ Recent posts