printf("%c의 블로그", 'Molkka');

코딩공부/JAVA

[java] 예외처리

mol_kka 2021. 12. 27. 13:31

 

 

 

1.  try-catch

public class NumberException {

	public static void main(String[] args) {
		String strNum[] = { "23", "12", "3.14", "100" };
		int i = 0;
		try {
			for (i = 0; i < strNum.length; i++) {
				int num = Integer.parseInt(strNum[i]);
				System.out.println("숫자로 바뀐 값은==" + num);
			}
		} catch (Exception e) { //오류 발생 시 안내문자 출력
			System.out.println(strNum[i] + "는 정수로 변환되지 않습니다.");
			e.printStackTrace();
		}
	}
}

>> 그냥 작성하면 프로그램 비정상 종료, 값 출력도 안 됨

>> 예외처리하면 값은 출력되고 어떤 예외인지 안내하는 기능 설정할 수 있음

 

 

2. 입력 자료형 예외처리, 정수가 아닐 경우

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

public class Exception01 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("정수 3개 입력");
		int sum = 0, num = 0;
		for (int i = 0; i < 3; i++) {
			System.out.print(i + 1 + " >>");
			try {
				num = scan.nextInt();
			} catch (InputMismatchException e) {
				System.out.println("정수가 아닙니다. 다시 입력해주세요.");
				scan.next(); // 기존에 있던거 초기화
				i--;
				continue;
			}
			sum += num;
		}
		System.out.println("총 합은 ===" + sum);
		scan.close();
	}

}

 

 

 

3. 0으로 나누기 예외처리

import java.util.Scanner;

public class DivideZero {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int num;
		int dividor;
		System.out.println("숫자를 입력하세요>>");
		num = scan.nextInt();
		System.out.println("어떤 수로 나눌까요?>>");
		// 사용자가 0을 입력한다면? 에러 발생
		dividor = scan.nextInt();
		try {
			System.out.println(num + "를 " + dividor + "로 나누면 " + num / dividor + "입니다.");
		} catch (Exception e) {
			e.printStackTrace();//왜 에러가 나는지 콘솔에 내용이 뜸
		}
//		try {
//			System.out.println(num + "를 " + dividor + "로 나누면 " + num / dividor + "입니다.");
//		} catch (ArithmeticException e) {
//			System.out.println("0으로 나눌 수 없습니다.");
//			//프로그램이 멈추거나 꺼지진 않음. 경고메시지 보내는 기능으로 주로 씀.
//		}
		scan.close();
	}