JAVA

JAVA - try catch finally 문법 사용하기 ( 예외처리 )

Cong_S 2022. 7. 7. 10:07

프로그램을 만들다 보면 수없이 많은 오류가 발생한다.

동작을 하지 않기 하기 위한 자바의 배려이다. 하지만 때로는 이러한 오류를 무시하고 싶을 때도 있고, 오류가 날 때 그에 맞는 적절한 처리를 하고 싶을 때도 있다. 이에 자바는 try ... catch, throw 구문을 이용해 오류를 처리 한다.

 

import java.util.ArrayList;

public class TryMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int[] arr = {15, 2, 6};
		
		
		// 배열의 인덱스가 범위를 벗어나 ArrayIndexOutOfBoundsException 오류가 발생
		// 잘못된 오류가 발생해도 개발자가 원하는대로 오류 처리를 할 수 있게 해주자.
		// try catch finally 문법 : 예외를 처리하는 방법
		
//		try {
//		
//			for(int i = 0; i < 4; i++) {
//				System.out.println( arr[i] );
//			}
//		} catch (Exception e ) {
//			System.out.println("예외 발생! " + e.toString());
//		}
		
        // 예외처리 문장
        try {
        
            // 1. 첫 번째 오류 (범위 오류)
			for(int i = 0; i < 3; i++) {
				System.out.println( arr[i] );
			}	
            
            // 2. 두 번째 오류 (0으로 정수를 나눌 수 없는 연산 오류)
			int k = 4 / 0 ;
			
            // 3. 세 번째 오류 (add 할 수 있는 영역이 없는(null) 오류)
			ArrayList<String> myList = null;
			myList.add("안녕?");
				
            // 예외처리 문장
			} catch(ArrayIndexOutOfBoundsException e) {
				System.out.println( "배열 인덱스 예외발생시 처리 코드" );
				System.out.println(e.toString());
			} catch(ArithmeticException e) {
				System.out.println( "연산 예외발생시 처리 코드" );
				System.out.println(e.toString());
			} catch(Exception e) {
				System.out.println( "나머지 모든 예외발생시 처리 코드" );
				System.out.println(e.getMessage());
			} finally {
				System.out.println( "예외 발생하든 발생하지 않든, 꼭 실행해야하는 코드는 여기 작성" );
			}
	}
}

기본 문법은 try와 catch 문장으로 실제 작동되는 코드를 감싸는 구조이다.

 

catch에서 어떤 오류 문구를 감지해 어떤 문장을 대신 실행시킬지 입력하면 된다.

 

finally 에서는 오류임에도 불구하고 꼭  실행시켜야하는 코드를 작성하면 된다.

 

아래는 실제 오류 출력 결과값 예시

첫 번째 범위 오류 출력
두 번째 연산 오류 출력
세 번째 다른 모든 오류 출력