본문 바로가기
언어/JAVA

Checked Exception과 Unchecked Exception

by 이민우 2024. 5. 8.
728x90
반응형

진짜진짜진짜진짜 간단한건데.. 까먹고 살았다가 오늘 이를 다시금 알게 된 계기가 있어 까먹지 않고자 다시 한 번 공부를 하고, 이를 블로그에 기재해볼까 한다.

 

프로그래밍을 하다보면 예외처리는 선택이 아닌 필수이다. 그래야만 사용자의 요청에 대한 예외가 발생했을 경우 어떠한 상황으로 인해 예외가 발생했는 지 사용자에게 return할 수 있다.

그런 거 없이 500 Internal Exception만 Return하는 코드를 본 적이 있는데, 내가 사용자였다면 두 번 다시 사용하지 않을 것 같다.

 

그리고 예외인 Exception은 크게 두 가지로 구분된다.

  1. Checked Exception
  2. Unchecked Exception

두 Exception의 차이점은 간단하다. 바로 try, catch로 감싸는 예외처리문이 강제되는지 여부이다.

 

우선 Java의 경우 코드를 짜다보면, try와 catch로 감싸지 않았다는 이유로 빨간줄이 뜨며 실행이 되지 않는 경우를 보았을 것이다.

 

아래 코드처럼 말이다.

 

위 코드를 보면 a.aa(); 코드 밑에 빨간줄이 생성되어 있음을 확인할 수 있다.

이유는 무엇일까? 당연히 try, catch가 걸려있지 않기 때문이다.

 

a.aa()는 IOException을 throw한다. 고로 해당 함수를 호출하는 코드에는 반드시 try, catch로 이에 대한 대응책이 마련되어 있어야만 한다.

 

이렇듯 예외처리가 강제되는 예외를 바로 Checked Exception이라고 부른다.

실행을 시키지도 않았는데 빨간 줄이 뜨는 것에서 볼 수 있듯, 컴파일러가 확인하는 예외이다.

 

그렇다면 위의 IOException 부분을 RuntimeException으로 바꾸어보자.

 

이번에는 빨간줄이 생성되지 않았다.

즉, 굳이 try, catch를 이용한 예외처리를 해주지 않아도 되는 경우이다.

 

이렇듯 굳이 예외처리를 해주지 않아도 되는, 즉 예외 처리가 강제되지 않는 예외를 Unchecked Exception이라고 부른다.

빨간 줄이 뜨지 않았다는 점에서 확인할 수 있듯이 컴파일러가 굳이 검사를 하지 않으며, 실행 단계에서 확인된다.

 

둘의 차이점을 정리하면 아래와 같이 정리할 수 있을 것 같다.

  Checked Exception Unchecked Exception
예외처리 반드시 예외처리되어야 함. 예외처리 되어있지 않아도 됨.
확인시점 컴파일 시 컴파일러가 확인함. 실행 시간에 동적으로 확인됨
종류 Exception을 상속받는 예외 RuntimeException을 상속받는 예외

 

728x90
반응형

'언어 > JAVA' 카테고리의 다른 글

[JAVA] 코테용 함수들  (0) 2023.07.08
1970년 01월 01일 00시 00분 00초  (0) 2023.03.17
JDBC 사용법  (0) 2022.07.25
리눅스 OS에 명령어 보내기  (0) 2022.07.21
[JAVA] 온점 단위 Split  (0) 2022.03.10