CheckedException과 UnCheckedException의 차이

노승철 ·2023년 4월 5일
1

java

목록 보기
1/1

자바에서 예외(Exception)는 Checked Exception과 Unchecked Exception 두 가지로 나눌 수 있습니다. 이번 글에서는 Checked Exception과 Unchecked Exception의 차이점을 알아보겠습니다.

Checked Exception

Checked Exception은 예외 처리가 강제되는 예외입니다. 즉, 예외가 발생한 메서드에서 예외를 처리하거나, 해당 메서드를 호출한 상위 메서드에서 예외를 처리해야 합니다. Checked Exception은 일반적으로 입출력, 네트워크, 데이터베이스 연결과 같은 외부 자원을 사용하는 메서드에서 발생합니다. Checked Exception을 사용하는 이유는, 이러한 자원을 사용하는 경우 예기치 못한 상황이 발생할 수 있기 때문에 예외 처리를 강제함으로써 프로그래머가 예외 상황을 놓치지 않도록 하기 위함입니다.

Checked Exception 예시 코드를 보겠습니다.

import java.io.FileInputStream;
import java.io.IOException;

public class Example {

    public static void main(String[] args) {
        try {
            FileInputStream fileInputStream = new FileInputStream("example.txt");
            // 파일에서 데이터를 읽는 로직
            fileInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드에서 FileInputStream 생성자는 FileNotFoundException이 발생할 수 있는 메서드입니다. 따라서 IOException 예외를 처리하기 위해 try-catch 구문을 사용하여 예외를 처리하였습니다.

Unchecked Exception

Unchecked Exception은 예외 처리가 강제되지 않는 예외입니다. 즉, 예외가 발생해도 상위 메서드에서 예외 처리를 강제하지 않습니다. Unchecked Exception은 주로 프로그래밍 오류와 관련된 예외입니다. 예를 들어, 배열 인덱스 범위를 벗어나거나, 널 포인터 참조 등의 경우에 Unchecked Exception이 발생합니다.

Unchecked Exception 예시 코드를 보겠습니다.

public class Example {

    public static void main(String[] args) {
        int[] arr = new int[5];
        arr[6] = 10;
    }
}

위 코드에서 arr 배열의 인덱스를 벗어나 arr[6]에 10을 할당하려고 하면 ArrayIndexOutOfBoundsException이 발생합니다. 이 예외는 Checked Exception이 아니므로, 예외 처리를 강제하지 않습니다.

Checked Exception와 Unchecked Exception 차이점

Checked Exception과 Unchecked Exception의 가장 큰 차이점은 예외 처리가 강제되는지 여부입니다. Checked Exception은 예외 처리가 강제되므로, 예외 처리를 강제하지 않으면 컴파일 오류가 발생합니다. 반면에, Unchecked Exception은 예외 처리를 강제하지 않으므로, 예외 처리를 강제하지 않아도 코드 컴파일은 가능합니다. 따라서, Checked Exception은 반드시 예외 처리를 해야 하는 외부 자원을 다루는 코드에서 사용되며, Unchecked Exception은 주로 프로그램 자체의 버그나 오류를 나타내는 예외로 사용됩니다.

또한, Checked Exception은 throws 키워드를 사용하여 예외를 호출한 메서드로 던져야 합니다. 이를 통해 예외를 처리하지 않고 호출한 메서드로 예외를 전달할 수 있습니다. 반면에, Unchecked Exception은 throws 키워드를 사용하지 않아도 예외를 던질 수 있습니다.

Checked Exception Class 종류

  • IOException
  • SQLException
  • ClassNotFoundException
  • InterruptedException
  • ...

Unchecked Exception Class 종류

  • RuntimeException
  • NullPointerException
  • ArrayIndexOutOfBoundsException
  • IllegalArgumentException
    ...

따라서, 예외 처리가 강제되는지 여부에 따라 Checked Exception과 Unchecked Exception을 선택하여 사용하면 됩니다. 외부 자원을 다루는 코드에서는 Checked Exception을, 프로그램 자체의 버그나 오류를 나타내는 예외에서는 Unchecked Exception을 사용하는 것이 일반적입니다.

profile
👨🏻‍💻 #developer#일상#공부#기록

4개의 댓글

comment-user-thumbnail
2023년 4월 11일

강제되는 예외와 강제되지 않는 예외는 어떻게 알고 판단하는 걸까요? 느낌적으로 알 순 없으니까요 ㅠ_ㅠ

1개의 답글

관련 채용 정보