예외의 개념과 종류

Dev StoryTeller·2021년 8월 16일
0

1. Throwable?

여지껏 우리는 예외만 알고있지만, 사실 던져지는 건(Throw) 예외 뿐만이 아니다.
던져지는 것에는 크게 오류(Error)와 예외(Exception)가 있다.
(참조: https://close852.tistory.com/47)

Error와 Exception은 어느 단계에서 던져지는 것이냐에 차이가 있다.


2. Error

Error는 프로그램 실행 전에 던져지는 것으로, 시스템 레벨에서 문제가 생겼을 때 발생한다.
스레드와 관련된 threadDeath 오류나, Stack/Memory 관련 오류 등과 같이
문제가 생기면 아예 컴파일조차 안되는 것들을 말한다.

이런 오류들은 시스템 수준의 문제로써, 개발자가 미리 알고 처리할 방법이 없다.
따라서 애플리케이션이 알아서 처리하고 던져주며, 개발자는 이를 보고 문제인 부분을 수정하면 된다.
(참조: http://web.deu.edu.tr/doc/oreily/java/exp/ch04_05.htm)


3. Exception

Error가 시스템 수준의 문제라면, Exception은 애플리케이션 수준의 문제이다.
즉, 개발자가 작성한 프로그램의 흐름상에 문제가 있다는 것이다.

따라서 코드 상으로 충분히 처리할 수 있으며,
최소한 실행하기 위해 반드시 확인해야 할 Checked Exception과,
실행한 후 생기는 유동적인 예외UnChecked Exception이 있다.


1. Checked Exception

프로그램이 작동(Runtime)하기 전, 컴파일 단계에서 생기는 예외이다.
대표적으로 SQLException, IOException이 있고, 클래스가 참조되지 않는 ClassNotFoundException 등이 있다.

(필자의 생각)
이러한 예외들은 처리한다기 보다 던져지는 문제를 수정하는 것이라, 보통 예외를 처리하진 않는다.
(출처: https://sjh836.tistory.com/122)


2. UnChecked Exception

꼭 체크할 필요는 없는, 필요에 따라 처리하는 예외이다.
Runtime 시에 발생하기 때문에 RuntimeException에 해당하며, 가장 중요하게 봐야할 예외이다.

이에 대해서는 다음편에서 알아보자.

profile
개발을 이야기하는 개발자입니다.

0개의 댓글