코딩공부/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();
}