CS/JAVA

자바 - 예외 처리 : try catch

reko_ 2022. 4. 21. 03:19

예외

 

오동작이나 결과에 악영향을 미칠 수 있는 실행 중 발생한 오류

 • 정수를 0으로 나누는 경우

 • 배열보다 큰 인덱스로 배열의 원소를 접근하는 경우

 • 존재하지 않는 파일을 읽으려고 하는 경우

 • 정수 입력을 기다리는 코드가 실행되고 있을 때, 문자가 입력된 경우

 

 

자바에서 예외 처리 가능

 • 예외 발생 → 자바 플랫폼 인지 → 응용프로그램에 전달

 • 응용프로그램이 예외를 처리하지 않으면, 응용프로그램 강제 종료

 

 

예외 처리

 

• 예외가 발생할 때 대응하는 프로그램 코드 - try-catch-finally문 사용

try {
	예외가 발생할 가능성이 있는 실행문(try 블록)
}
catch (처리할 예외 타입 선언) {
	예외 처리문(catch 블록)
}
finally {
	예외 발생 여부와 상관없이 무조건 실행되는 문장
	(finally 블록)
}

finally는 생략하고 계속해서 코드를 작성해도 똑같은 작업을 수행한다.

 

 

 

EX) zero division 예외 처리 - Arithmetic Exception

import java.util.Scanner;
public class DevideByZeroHandling {
	public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        while(true) {
            System.out.print("나뉨수를 입력하시오:");
            int dividend = scanner.nextInt(); // 나뉨수 입력
            System.out.print("나눗수를 입력하시오:");
            int divisor = scanner.nextInt(); // 나눗수 입력
            
            try {
                System.out.println(dividend + "를 "+ divisor + "로 나누면 몫은 “ + dividend/divisor + "입니다.");
                break; // 정상적인 나누기 완료 후 while 벗어나기
            }
            catch(ArithmeticException e) { // ArithmeticException 예외 처리 코드
                System.out.println("0으로 나눌 수 없습니다! 다시 입력하세요");
            }
        }
        scanner.close();
    }
}

 

 

실행 결과

 

나뉨수를 입력하시오:100
나눗수를 입력하시오:0
0으로 나눌 수 없습니다! 다시 입력하세요
나뉨수를 입력하시오:100
나눗수를 입력하시오:5
100를 5로 나누면 몫은 20입니다