Java의 체크된 예외와 체크되지 않은 예외

Mohammad Irfan 2023년10월12일
  1. Java에서 확인된 예외
  2. Java에서 확인되지 않은 예외
Java의 체크된 예외와 체크되지 않은 예외

이 튜토리얼은 Java에서 체크된 예외와 체크되지 않은 예외가 무엇인지 소개합니다.

Java에서 예외는 코드 실행 중에 발생하여 비정상적으로 실행을 종료하는 상황입니다. 이 예외는 컴파일 타임이나 런타임에 발생할 수 있습니다. Java는 예외를 크게 두 가지 유형(선택됨 및 선택되지 않음)으로 분류합니다. 컴파일 타임에 컴파일러가 검사하는 예외를 검사된 예외라고 합니다. 한편 런타임에 확인되는 예외를 확인되지 않은 예외라고 합니다.

예외를 처리하기 위해 Java는 NullPointerException, ArrayIndexOutofBoundsException, IOException 등과 같은 각 예외에 대한 클래스를 제공합니다. Exception 클래스는 모든 예외 클래스의 맨 위에 있으며 Exception의 하위 클래스인 모든 것 RuntimeException 및 해당 하위 클래스를 제외하고는 확인된 예외입니다.

ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException과 같이 RuntimeException을 상속하는 예외 클래스를 확인되지 않은 예외라고 합니다. 이들은 런타임에 확인됩니다.

Java에서 확인된 예외

먼저 예외가 무엇이며 코드 실행에 어떤 영향을 미치는지 이해합시다. 이 예제에서 우리는 파일에 데이터를 쓰고 있으며 이 코드는 FileNotFoundException, IOException 등과 같은 예외가 발생하기 쉽습니다. 우리는 catch 핸들러를 제공하지 않았으며 이들은 체크된 예외이므로 Java 컴파일러는 코드를 컴파일하지 않고 컴파일 타임에 예외를 throw합니다. 아래의 예를 참조하십시오.

import java.io.FileOutputStream;

public class SimpleTesting {
  public static void main(String[] args) {
    FileOutputStream fout =
        new FileOutputStream("/home/root/eclipse-workspace/java-project/myfile.txt");
    fout.write(1256);
    fout.close();
    System.out.println("Data written successfully");
  }
}

출력:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	Unhandled exception type FileNotFoundException
	Unhandled exception type IOException
	Unhandled exception type IOException

	at SimpleTesting.main(SimpleTesting.java:8)

코드의 비정상적인 종료를 방지하려면 코드에 catch 핸들러를 제공해야 합니다. 아래는 위와 같은 코드이지만 중간에 코드가 종료되지 않고 잘 실행되도록 catch 핸들러가 있습니다. 아래의 예를 참조하십시오.

import java.io.FileOutputStream;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      FileOutputStream fout =
          new FileOutputStream("/home/irfan/eclipse-workspace/ddddd/myfile.txt");
      fout.write(1256);
      fout.close();
      System.out.println("Data written successfully");
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

출력:

Data written successfully

Java에서 확인되지 않은 예외

아래 코드는 확인되지 않은 예외인 ArrayIndexOutOfBoundsException을 발생시킵니다. 이 코드는 성공적으로 컴파일되지만 배열 범위를 벗어난 요소에 액세스할 때 실행되지 않습니다. 따라서 코드에서 런타임 예외가 발생합니다. 아래의 예를 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) {
    int[] arr = {3, 5, 4, 2, 3};
    for (int i = 0; i < arr.length; i++) {
      System.out.println(arr[i]);
    }
    System.out.println(arr[23]);
  }
}

출력:

3
5
4
2
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 23 out of bounds for length 5
	at SimpleTesting.main(SimpleTesting.java:9)

관련 문장 - Java Exception