자바에서 checked 예외와 unchecked 예외의 차이점은?
_____A1: Checked 예외는 컴파일 시점에 반드시 처리(try-catch)하거나 메서드 선언부에 throws로 명시해야 하는 예외입니다. 컴파일러가 이 예외들을 확인하여 예외 처리 코드를 누락하면 컴파일 에러가 발생합니다. 예를 들어, `IOException`, `SQLException` 등이 있습니다.
Q2: 자바에서 unchecked 예외란 무엇인가요?
A2: Unchecked 예외는 RuntimeException을 상속한 예외들로, 컴파일러가 예외 처리 여부를 강제하지 않습니다. 따라서 개발자가 필요에 따라 처리할 수 있으며, 처리하지 않아도 컴파일 에러가 발생하지 않습니다. 주로 프로그래밍 오류를 나타내는 경우가 많으며, `NullPointerException`, `ArrayIndexOutOfBoundsException` 등이 포함됩니다.
Q3: checked 예외와 unchecked 예외의 주요 차이점은 무엇인가요?
A3:
- 예외 처리 강제 여부: Checked 예외는 반드시 예외 처리하거나 throws 선언을 해야 하지만, unchecked 예외는 그렇지 않습니다.
- 발생 원인: Checked 예외는 주로 외부 환경 문제(파일 없거나, 네트워크 오류)에서 발생하고, unchecked 예외는 주로 프로그래밍 오류(잘못된 인덱스 접근, null 참조 등)에서 발생합니다.
- 컴파일러 검사 여부: Checked 예외는 컴파일 타임에서 예외 처리를 강제 검사하며, unchecked 예외는 런타임시에만 발생하며 컴파일러가 검사하지 않습니다.
Q4: checked 예외를 처리하지 않으면 어떤 문제가 발생하나요?
A4: 컴파일 타임에 컴파일 에러가 발생하여 프로그램이 빌드되지 않습니다. 따라서 checked 예외는 반드시 try-catch 블록으로 처리하거나 throws로 예외를 상위 메서드에 전달해야 합니다.
Q5: unchecked 예외도 꼭 처리해야 하나요?
A5: 반드시 처리할 필요는 없지만, 적절히 처리하지 않으면 런타임 시 애플리케이션이 예기치 않게 종료될 수 있습니다. 비즈니스 로직에 따라 적절한 예외 처리가 권장됩니다.
A6:
- Checked 예외: 외부 시스템과의 연동 또는 예측 가능한 실패 상황(파일 입출력, DB 연결 실패 등)을 다룰 때 사용합니다.
- Unchecked 예외: 프로그램 내부의 논리적 오류, 버그, 개발자 실수 등을 나타낼 때 주로 사용합니다.
Q7: 예를 들어 checked 예외와 unchecked 예외를 각각 하나씩 알려주세요.
A7:
- Checked 예외: `FileNotFoundException` (파일이 존재하지 않을 때 발생)
- Unchecked 예외: `NullPointerException` (null 객체 참조 시 발생)
Q8: 메서드 정의 시 checked 예외와 unchecked 예외의 throws 선언 차이는 무엇인가요?
A8: Checked 예외는 메서드 선언에 반드시 throws로 선언해야 하지만, unchecked 예외는 throws 선언이 필수가 아닙니다. unchecked 예외는 선언하지 않아도 호출자에게 전달됩니다.
---
요약:
- Checked 예외: 컴파일 시 처리 강제, 외부 요인, `Exception` 직접 상속
- Unchecked 예외: 런타임에 체크, 프로그래밍 오류, `RuntimeException` 상속
- 처리 방법과 발생 원인에서 큰 차이를 지닌다.
자바의 예외는 크게 두 가지로 분류됩니다: checked 예외와 unchecked 예외. 이 두 가지 예외는 발생하는 상황과 처리 방법에서 중요한 차이를 보입니다.
Checked 예외Checked 예외는 컴파일 타임에 체크되는 예외입니다.
즉, 이러한 예외는 코드가 컴파일될 때 발생할 수 있는 예외를 미리 처리해야 함을 강제합니다.
자바에서 Checked 예외는 `Exception` 클래스를 상속받는 클래스 중에서 `RuntimeException`을 제외한 모든 예외를 포함합니다.
특징:1. 강제 처리 : Checked 예외는 반드시 try-catch 블록으로 처리하거나, 메서드 시그니처에 `throws` 키워드를 사용하여 호출하는 쪽에서 처리하도록 강제해야 합니다.
```java public void readFile(String filePath) throws IOException { // 파일 읽기 로직 } ```2. 예외 발생 가능성 : Checked 예외는 주로 외부 환경과의 상호작용에서 발생할 수 있는 예외로, 예를 들어 파일 입출력, 네트워크 연결, 데이터베이스 접근 등에서 발생할 수 있습니다.
이러한 예외는 예측 가능하고, 개발자가 사전에 처리할 수 있도록 설계되었습니다.
3. 예외 처리의 중요성 : Checked 예외를 처리하지 않으면 컴파일 에러가 발생하므로, 개발자는 이러한 예외를 반드시 고려해야 합니다.
이는 코드의 안정성을 높이는 데 기여합니다.
Unchecked 예외Unchecked 예외는 런타임 예외(Runtime Exception)라고도 불리며, 컴파일 타임에 체크되지 않는 예외입니다.
자바에서 Unchecked 예외는 `RuntimeException` 클래스를 상속받는 예외들로, 주로 프로그래밍 오류나 논리적 오류로 인해 발생합니다.
특징:1. 자유로운 처리 : Unchecked 예외는 강제로 처리할 필요가 없으므로, 개발자가 필요에 따라 try-catch 블록으로 처리할 수 있습니다.
이는 코드의 간결성을 유지하는 데 도움이 됩니다.
```java public void divide(int a, int b) { int result = a / b; // b가 0일 경우 ArithmeticException 발생 } ```2. 예외 발생 가능성 : Unchecked 예외는 주로 잘못된 프로그래밍 로직에서 발생합니다.
예를 들어, 배열의 인덱스 범위를 초과하는 경우, null 객체에 접근하는 경우, 잘못된 형변환 등이 있습니다.
이러한 예외는 예측하기 어려운 경우가 많고, 프로그램의 실행 중에 발생합니다.
3. 개발자의 책임 : Unchecked 예외는 개발자가 코드 작성 시 주의해야 할 부분으로, 예외를 사전에 방지하는 것이 중요합니다.
예를 들어, 배열의 인덱스를 사용할 때는 항상 유효성을 검사해야 합니다.
요약Checked 예외와 Unchecked 예외는 예외 처리의 방식과 발생 원인에서 큰 차이를 보입니다.
Checked 예외는 외부 환경과의 상호작용에서 발생할 수 있는 예외로, 반드시 처리해야 하며, Unchecked 예외는 프로그래밍 오류로 인해 발생할 수 있는 예외로, 필요에 따라 처리할 수 있습니다.
이러한 차이를 이해하고 적절하게 예외를 처리하는 것은 자바 프로그래밍에서 매우 중요한 부분입니다.
예외 처리를 통해 프로그램의 안정성을 높이고, 예외 상황에 대한 적절한 대응을 할 수 있습니다.
작성자:
박예린 [비회원]
| 작성일자: 1년 전
2024-09-05 03:56:57
조회수: 246 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 246 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.