일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- codeium
- gtihub
- 11월순위
- ANTIFRAGILE
- 자바
- 르세라핌
- db종류
- git pat
- macvlan
- 명령어
- analytics4
- docker
- 티스토리챌린지
- DBMS
- Python
- SQL
- IntelliJ
- java
- mssql
- pat발급
- PostgreSQL
- JPA
- 애널리틱스4
- spring
- 데이터내보내기
- mysql
- API
- 오블완
- oracle
- Today
- Total
hanker
Java - CheckedException과 UncheckedException이 뭐지? 본문
이번 글에서는 Checked / Unchecked Exception 두 예외처리에 대해서 자세히 알아보자.
이 내용을 설명하기전에 위 글을 미리 읽어보길 바란다.
Checked Exception
정의
Checked Exception은 컴파일 타임에 발생 가능성을 검사하는 예외이다. 코드에서 이러한 예외를 처리하지 않으면 오류가 발생하기 때문에
반드시 try-catch 블록으로 처리하거나 throws 키워드로 호출 메서드에 예외를 명시해야 합니다.
특징
- 컴파일러가 예외 처리 여부를 강제한다.
- 예외 처리를 명시하지 않으면 컴파일 에러가 발생한다.
- 주로 프로그램 외부 환경에 의해 발생할 가능성이 있는 예외이다.
예시)
IOException: 파일 입출력 시 발생 가능
SQLException: 데이터베이스 처리 중 발생 가능
ClassNotFoundException: 클래스 로딩 실패
FileNotFoundException : 지정한 파일이 존재하지 않을 때
Unchecked Exception
정의
Unchecked Exception은 컴파일러가 예외 처리 여부를 강제하지 않는 예외로, 런타임 시에만 확인된다.
주로 프로그래머의 실수로 발생한다.
특징
- 주로 프로그래머의 실수로 인해 발생한다.
- try-catch로 처리하지 않아도 컴파일 오류가 발생하지 않는다. 개발자의 선택에 따라 처리하거나 무시할 수 있다.
- 런타임 시에만 예외가 발생하므로 컴파일 시에는 예외 처리 여부를 확인하지 않는다.
- RuntimeException 클래스를 상속한 예외들이다.
- 프로그램이 실행 중 문제를 발견하고 예외를 던진다.
예시
NullPointerException: null 객체를 참조할 때 발생
ArrayIndexOutOfBoundsException: 배열 인덱스 초과
ArithmeticException: 0으로 나누기
IllegalArgumentException : 메서드에 잘못된 인수를 전달할 경우
정리
특징 | Checked Exception | Unchecked Exception |
검사 시점 | 컴파일 타임 | 런타임 |
처리 강제 여부 | 반드시 처리해야 함 (try-catch 또는 throws) | 처리 강제 없음 |
주로 발생 상황 | 외부 환경 문제 | 프로그래머의 실수 |
대표 클래스 | Exception (단, RuntimeException 제외) | RuntimeException 및 그 하위 클래스 |
Checked Exception: 예외를 명확히 예상하고 강제적으로 처리해야 하는 경우 사용
예: 파일, 네트워크, 데이터베이스 작업
Unchecked Exception: 프로그래머가 실수한 경우 런타임 시 문제를 처리할 수 있도록 사용
예: 잘못된 코드 작성으로 발생하는 논리적 오류
끝.
'JAVA' 카테고리의 다른 글
Java - 컴파일타임(Compile Time)과 런타임(Run Time)이 뭘까? (0) | 2024.12.05 |
---|---|
Java - Java Servlet 이란? (0) | 2024.12.04 |
JAVA - JAVA에서 쓰레드란 무엇이며, 어떻게 생성할까? (0) | 2024.12.03 |
JAVA - JAVA에서 가비지 컬렉션(GC)이란 무엇일까? (0) | 2024.12.02 |
JAVA - JAVA에서 제네릭이란 무엇일까? (0) | 2024.12.01 |