프로그래밍 언어/JAVA

자바: Checked와 Unchecked 예외(Exceptions)란?

구루다 2023. 3. 5. 08:05
반응형

자바: Checked와 Unchecked 예외(Exceptions)란?

자바(Java) 프로그래밍 언어에서 예외(Exception)란 실행 중에 발생할 수 있는 프로그램 오류를 의미합니다. 이 예외들은 일반적으로 프로그래머가 예상 가능한 오류 상황을 나타냅니다. 자바에서는 두 가지 종류의 예외가 있습니다. 첫 번째는 "Checked Exception(확인된 예외)"이며, 두 번째는 "Unchecked Exception(확인되지 않은 예외)"입니다. 두 예외 유형은 서로 다른 방식으로 처리되며, 다른 목적을 가지고 있습니다.

 

JAVA 9-3
JAVA 9-3

 

Checked Exceptions

Checked Exception은 컴파일러(compiler)가 확인할 수 있는 예외입니다. 즉, 이러한 예외를 발생시키는 메소드를 호출할 때 컴파일러는 예외 처리를 강제합니다. 따라서 Checked Exception은 예외 처리에 대한 책임을 강제합니다. Checked Exception을 발생시키는 일반적인 예는 파일을 읽고 쓰는 I/O 작업입니다. 이러한 작업은 파일이 존재하지 않거나, 파일에 액세스 할 수 없거나, 잘못된 파일 이름을 사용하는 등의 예외를 발생시킬 수 있습니다. 다음은 Checked Exception을 처리하는 방법에 대한 몇 가지 예입니다.

 

반응형

 

Try-Catch 블록을 사용한 처리

try {
    // 예외가 발생할 가능성이 있는 코드
    } catch (FileNotFoundException e) {
    // FileNotFoundException 예외를 처리하는 코드 
}

 

 

Throws 선언을 사용한 처리

public void readFile() throws FileNotFoundException {
	// 예외가 발생할 가능성이 있는 코드 
}

Checked Exception을 처리하는 것은 필수적이므로, 이러한 예외를 처리하는 방법을 이해하는 것은 매우 중요합니다.

 

 

Unchecked Exceptions

Unchecked Exception은 컴파일러에서 확인되지 않는 예외입니다. 즉, 예외를 처리하지 않아도 프로그램은 컴파일됩니다. 그러나 이러한 예외가 발생하면 프로그램이 실행 중지됩니다. Unchecked Exception을 발생시키는 일반적인 예는 배열(Array) 인덱스 범위를 초과하는 것입니다. 다른 예로는 NullPointerException, ArithmeticException 등이 있습니다. 다음은 Unchecked Exception을 처리하는 방법에 대한 몇 가지 예입니다.

 

300x250

 

Try-Catch 블록을 사용한 처리

try {
	// 예외가 발생할 가능성이 있는 코드 
} catch (ArrayIndexOutOfBoundsException e) {
	// ArrayIndexOutOfBoundsException 예외를 처리하는 코드 
}

 

 

예외 던지기

public void myMethod() {
    if (myArray.length < index) {
   		throw new ArrayIndexOutOfBoundsException("Index out of range"); 
    } // 예외를 처리하는 코드 
}

Unchecked Exception을 처리하는 것은 필수적이지는 않지만, 이러한 예외가 발생하는 경우 프로그램이 예기치 않게 중단될 수 있으므로, 이를 처리하는 것이 좋습니다.

 

 

Checked와 Unchecked Exceptions의 차이점

Checked Exception과 Unchecked Exception의 가장 큰 차이점은 컴파일러가 확인하는 것입니다. Checked Exception은 컴파일러에서 확인되므로 예외 처리를 강제합니다. 반면에 Unchecked Exception은 컴파일러에서 확인되지 않으므로 예외 처리가 필수적이지 않습니다. 또한 Checked Exception은 I/O 작업, 데이터베이스 연결, 네트워크 연결 등의 복잡한 작업에서 발생하는 경우가 많습니다.

반면에 Unchecked Exception은 일반적으로 배열 인덱스 범위를 초과하거나 Null 값에 대한 작업에서 발생합니다. Checked Exception과 Unchecked Exception을 올바르게 처리하면 프로그램의 안정성과 가독성을 향상시킬 수 있습니다. 따라서 이러한 예외를 처리하는 방법에 대한 이해는 모든 자바 개발자에게 필수적입니다.

 

 

Q&A

Checked와 Unchecked 예외(Exceptions)의 차이점은 무엇입니까?

Checked Exception은 예외 처리를 강제하는 예외로, 컴파일러에서 확인됩니다. 주로 I/O 작업, 데이터베이스 연결, 네트워크 연결 등의 복잡한 작업에서 발생합니다. 반면 Unchecked Exception은 컴파일러에서 확인되지 않으므로 예외 처리가 필수적이지 않습니다. 주로 배열 인덱스 범위를 초과하거나 Null 값에 대한 작업에서 발생합니다.

 

Checked와 Unchecked 예외(Exceptions)의 예는 무엇입니까?

Checked Exception의 예시로는 FileNotFoundException, SQLException 등이 있습니다. 반면 Unchecked Exception의 예시로는 NullPointerException, ArrayIndexOutOfBoundsException 등이 있습니다. Checked Exception은 주로 I/O 작업, 데이터베이스 연결, 네트워크 연결 등의 복잡한 작업에서 발생하고, Unchecked Exception은 주로 배열 인덱스 범위를 초과하거나 Null 값에 대한 작업에서 발생합니다.

 

자바에서 Checked와 Unchecked 예외(Exceptions)에는 어떤 것들이 있습니까?

Java에서 Checked Exception의 목록은 IOException, SQLException, ClassNotFoundException 등이 있습니다. 반면 Unchecked Exception의 목록은 NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException 등이 있습니다. Checked Exception은 주로 I/O 작업, 데이터베이스 연결, 네트워크 연결 등의 복잡한 작업에서 발생하고, Unchecked Exception은 주로 배열 인덱스 범위를 초과하거나 Null 값에 대한 작업에서 발생합니다.

 

자바에서 checked 예외에는 어떤 것들이 있습니까?

Checked Exception의 예시로는 FileNotFoundException, SQLException, ClassNotFoundException 등이 있습니다. 이들 예외는 컴파일러에서 확인되며 예외 처리를 강제합니다. FileNotFoundException은 파일이나 디렉토리를 찾지 못할 때, SQLException은 데이터베이스 연결 및 쿼리 처리 관련 예외, ClassNotFoundException은 클래스를 찾을 수 없을 때 발생합니다.

 

NullPointerException은 checked 또는 unchecked 둘중 어느것인가요?

NullPointerException은 Unchecked Exception으로, 컴파일러에서 확인되지 않으며 예외 처리가 필수적이지 않습니다. 이 예외는 주로 Null 값을 가진 객체를 참조할 때 발생합니다. 따라서 NullPointerException은 RuntimeException의 하위 클래스로 분류됩니다.

 

SQL exception은 checked 또는 unchecked 둘중 어느것인가요?

SQLException은 Checked Exception으로, 컴파일러에서 확인되며 예외 처리를 강제합니다. 이 예외는 주로 데이터베이스 연결 및 쿼리 처리 관련 예외입니다. SQL exception은 JDBC API에서 발생하며, 데이터베이스 연결, 쿼리 실행, 결과 집합 처리 등에서 발생할 수 있습니다. 따라서 SQLException은 Exception 클래스의 하위 클래스로 분류됩니다.

 

NullPointerException은 runtime 예외입니까??

네, NullPointerException은 RuntimeException의 하위 클래스로 분류되어 Unchecked Exception입니다. 이 예외는 주로 Null 값을 가진 객체를 참조할 때 발생하며, 컴파일러에서 확인되지 않으므로 예외 처리가 필수적이지 않습니다. 따라서 NullPointerException은 프로그램 실행 중(runtime) 발생할 수 있는 예외 중 하나입니다. unchecked 예외(Exceptions)의 또 다른 종류는 무엇이 있습니까? java에서는 다양한 종류의 Unchecked Exception이 있습니다. 대표적으로는 NullPointerException, ArrayIndexOutOfBoundsException, ClassCastException, ArithmeticException, IllegalArgumentException 등이 있습니다. 이러한 예외는 컴파일러에서 확인되지 않으므로 예외 처리가 필수적이지 않습니다. 따라서 개발자가 예외 처리를 수행해야 하며, 예외가 발생하면 프로그램이 비정상적으로 종료될 수 있습니다.

 

 

결론

이 글에서는 자바에서 Checked Exception과 Unchecked Exception에 대해 다뤘습니다. 이러한 예외를 처리하는 것은 프로그램의 안정성을 유지하기 위해 매우 중요합니다. 따라서 예외 처리를 위한 적절한 방법을 선택하고 예외 처리에 대한 이해를 깊이 있는 수준으로 학습하는 것이 중요합니다.

 

 

Try-Catch-Finally 블록의 활용 방법

Try-Catch-Finally 블록의 활용 방법 자바 프로그래밍에서 예외 처리는 중요한 역할을 합니다. 예외란 프로그램 실행 중 발생할 수 있는 오류로, 이를 처리하지 않으면 프로그램이 비정상적으로 종료

gruda.tistory.com

 

JAVA: 예외와 오류(Exceptions and Errors)

JAVA: 예외와 오류(Exceptions and Errors) 자바(Java) 프로그래밍 언어는 안정적인 애플리케이션을 만들기 위한 다양한 기능을 제공합니다. 이러한 기능 중 하나가 예외와 오류 처리입니다. 이 글에서는

gruda.tistory.com

 

JAVA: 접근 제어자 (Access Modifiers)

JAVA: 접근 제어자 (Access Modifiers) Java는 객체 지향 프로그래밍 언어로서, 개발자가 데이터와 기능을 객체로 캡슐화하여 모듈화하고 재사용 가능한 코드를 작성할 수 있도록 합니다. Java에서의 접

gruda.tistory.com

 

JAVA: 중첩 클래스(Nested class)와 내부 클래스(Inner Classes)

JAVA: 중첩 클래스(Nested class)와 내부 클래스(Inner Classes) 자바(Java)는 객체 지향 프로그래밍 언어로써 클래스(class)를 중심으로 구성되어 있다. 클래스는 프로그램을 구성하는 요소 중 하나로, 데이

gruda.tistory.com

 

320x100
728x90