일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- 코딩테스트
- cleancode
- 코드
- 데이터베이스
- 그리디
- 개발
- 코딩
- 애자일기법
- Baekjoon
- Spring
- ES
- 백준
- 애자일프로그래밍
- 개발자
- 프레임워크
- 엘라스틱서치
- 읽기쉬운코드
- 알고리즘
- framework
- JPA
- 스프링
- API
- 애자일
- 그리디알고리즘
- 클린코드
- 자바
- database
- spring boot
- Elasticsearch
- Today
- Total
튼튼발자 개발 성장기🏋️
Error와 Exception의 차이를 아시나요? 본문
java에서는 "에러"라는 워딩보다 "예외" 혹은 "Exception"이라는 워딩을 사용하고 python에서 "Error" 워딩을 사용했었다. 그런데 java에서도 Error라는 워딩을 사용한다. 에러(Error)와 예외(Exception)는 모두 런타임에 발생할 수 있는 문제를 나타낸다는 공통점이 있다. 하지만 차이점은 분명히 있다.
Error
에러는 주로 jvm에서 발생하는 심각한 문제로, 프로그램이 정상적으로 실행될 수 없을 때 발생된다. 보통 개발자가 직접 처리하기 어렵거나, 처리하지 않아야하는 경우가 많다고한다. 우리가 흔히 알고있는 Throwable 클래스를 상속받은 Error 클래스는 java.lang 패키지에 있다. 이 Error 클래스를 상속받은 ThreadDeath 클래스라던지, VirtualMachineError, OutOfMemoryError, StackOverflowError 등의 클래스가 있다.
Error가 발생되면 프로그램이 계속 실행되기 어렵고 RuntimeException과 달리 런타임에 발생할 수 있는 비정상적인 상태를 의미한다.
Exception
반면에 예외는 개발자가 처리하여 프로그램이 계속 실행되도록 할 수 있다. 많이 알고있는 IOException이라던가 SQLException 등이 있다. 이 역시 Throwable 클래스를 상속받은 Exception이 있고 Exception을 상속받은 수 많은 클래스들이 있다. 보통 try-catch문을 통해 예외 처리를 한다. Exception은 크게 Checked Exception과 Unchecked Exception으로 나눌 수 있다.
- Checked Exception: 컴파일 타임에 반드시 처리해야하는 예외로 IOException 또는 SQLException 등이 있다.
- Unchecked Exception: 런타임에 발생하며, 처리하지 않아도 컴파일 에러가 발생하지 않는 예외로 NullPointerException 또는 ArrayIndexOutOfVoundsException 등이 있다.
예전 주니어 개발자 시절에 Throwable로 예외 처리를 하지 말라는 선배 이야기를 듣고 왜 그래야하는지 질문 했을 때 Error에 대한 이야기를 해준 것이 얼핏 기억이 난다. 난 그 때 멍청하게도 한 귀로 듣고 한 귀로 흘렸나보다...
'프로그래밍 > JAVA' 카테고리의 다른 글
값을 비교할 것인가 메모리 주소를 비교할 것인가? (0) | 2024.08.28 |
---|---|
문자열을 생성할 때 어떻게 생성하나요? (0) | 2024.08.28 |
STREAM 활용 (0) | 2022.08.23 |
Optional (0) | 2022.08.12 |
Stream (0) | 2022.07.25 |