자바 예외처리(try catch)
- 예외(Exception)
- 실행 중 오동작이나 결과에 악영향을 미치는 예상치 못한 상황 발생
- 자바에서는 실행 중 발생하는 에러를 예외로 처리
- 실행 중 예외가 발생하면
- 자바 플랫폼은 응용프로그램이 예외를 처리하도록 호출
- 응용프로그램이 예외를 처리하지 않으면 프로그램 강제 종료 시킴
- 예외 발생 경우
- 정수를 0으로 나누는 경우
- 배열의 크기보다 큰 인덱스로 배열의 원소를 접근하는 경우
- 정수를 읽는 코드가 실행되고 있을 때 사용자가 문자를 입력한 경우
- 실행 중 오동작이나 결과에 악영향을 미치는 예상치 못한 상황 발생
- 배열 범위 예외처리
12345678910111213public class OutOfBounds {public static void main(String[] args) {int intArray [] = new int[5];try {intArray[3] = 10; // 예외 발생하지 않음intArray[6] = 5; // 예외 발생}catch(ArrayIndexOutOfBoundsException e) {System.out.println("배열의 범위를 벗어났습니다.");}}}
- 0으로 나누기 예외처리
123456789101112131415161718import java.util.Scanner;public class DevideByZero {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int a = scanner.nextInt();int b = scanner.nextInt();try {int c = a / b;}catch(ArithmeticException e) {System.out.println("0으로 나눌 수 없습니다!");}finally {scanner.close();}}}
- 입력 예외처리
123456789101112131415161718192021222324import java.util.Scanner;import java.util.InputMismatchException;public class InputException {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("정수 3개를 입력하세요");int sum=0, n=0;for(int i=0; i<3; i++) {try {n = scanner.nextInt(); // 정수 입력}catch(InputMismatchException e) {System.out.println("정수가 아닙니다.");scanner.next();i--;continue;}sum += n;}System.out.println("합은 " + sum);scanner.close();}}