튼튼발자 개발 성장기🏋️

Error와 Exception의 차이를 아시나요? 본문

프로그래밍/JAVA

Error와 Exception의 차이를 아시나요?

시뻘건 튼튼발자 2024. 8. 28. 22:22
반응형

java에서는 "에러"라는 워딩보다 "예외" 혹은 "Exception"이라는 워딩을 사용하고 python에서 "Error" 워딩을 사용했었다. 그런데 java에서도 Error라는 워딩을 사용한다. 에러(Error)와 예외(Exception)는 모두 런타임에 발생할 수 있는 문제를 나타낸다는 공통점이 있다. 하지만 차이점은 분명히 있다.

 

[그림 1] 에러와 예외

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