예외처리문법 : 예외를 처리하는 가장 기본적인 문법은 try-catch 구문이다.
try {
예외가 발생할 수 있는 코드
} catch (예외클래스명 e) {
예외처리코드
}
int result = 0;
try {
result = 10/0;
System.out.println("계산결과 : "+result);
} catch(ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다.");
}
// 0으로 나눌 수 없습니다.
Scanner sc = new Scanner(System.in);
try {
System.out.print("점수를 입력하세요 : ");
int score = sc.nextInt();
if(score>=65) {
System.out.println("합격입니다.");
} else {
System.out.println("불합격입니다.");
}
}catch(InputMismatchException e){
System.out.println("입력이 잘못되었습니다.");
}
System.out.println("종료");

다중 catch문 : catch문을 여러 개 작성하여 예외별로 처리가능
Scanner sc = new Scanner(System.in);
try {
int[ ] card = { 4, 5, 1, 2, 7, 8 };
System.out.print("몇번째 카드를 뽑으시겠습니까? : ");
int cardIndex = sc.nextInt(); // 입력오류가능성 ㅇ
System.out.println("뽑은 카드번호는 " + card[cardIndex - 1]); // 예외발생가능성 ㅇ
} catch (InputMismatchException e) {
System.out.println("잘못 입력하셨습니다. 숫자만 입력가능합니다.");
} catch (IndexOutOfBoundsException e) {
System.out.println("해당 번호의 카드는 존재하지 않습니다.");
} catch (Exception e) {
System.out.println("오류");
}
System.out.println("프로그램 종료");



finally 블록 : 예외발생 여부와 상관없이 실행되는 구문(고정적으로 출력할 내용)으로 생략가능
예외가 발생해도 정상종료되어야 하는 구문들에서 사용
Scanner sc = new Scanner(System.in);
try {
System.out.print("점수를 입력하세요 : ");
int score = sc.nextInt();
if(score>=65) {
System.out.println("합격입니다.");
} else {
System.out.println("불합격입니다.");
}
}catch(InputMismatchException e){
System.out.println("입력이 잘못되었습니다.");
}finally{
System.out.println("종료");
}
1️⃣키보드에서 정수를 입력받고 정수 이외의 값이 입력되면 다음과 같이 출력하기
정수 : 100
결과 : 100
정수 : aa
aa은(는) 정수가 아닙니다.
Scanner sc = new Scanner(System.in);
String str = ""; // 전역변수는 내부에서 사용가능
try {
System.out.print("정수입력 : ");
str = sc.next(); // 정수처럼 보이지만 사실 문자열. 숫자를 써도 숫자모양의 문자열인 것!
int num = Integer.parseInt(str); // 문자열을 정수로 변환 //예외발생지점✨✨
System.out.println("결과 : " + str);
} catch (Exception e) {
System.out.println(str + "은(는) 정수가 아닙니다.");
}


'JAVA' 카테고리의 다른 글
[JAVA] 제네릭(Generic) (0) | 2023.08.30 |
---|---|
[JAVA] 예외 던지기, 임의의 예외처리, 사용자정의 예외처리 (0) | 2023.08.30 |
[JAVA] 예외처리 (1) | 2023.08.29 |
[JAVA] 내부클래스 (0) | 2023.08.29 |
[JAVA] 인터페이스 (0) | 2023.08.26 |