자바의 Exception의 분류와 Checked Exception과 UnChecked Exception의 차이점에 대해서 알아보겠습니다.

 

 

Checked Exception vs Unchecked Exception 개념과 차이점

 

 

 >> Error 클래스와 Exception 클래스 

 

먼저 자바의 Exception 클래스 상속구조는 최상단에 Object 클래스가 있고 Throwable 클래스가 상속받습니다. 그리고 Throwable 클래스는각각 Error 클래스와 Exception 클래스가 상속받습니다. 먼저 Error 클래스와 Exception 클래스을 알아보겠습니다.

 

Error 클래스부터 알아보겠습니다.

https://docs.oracle.com/javase/8/docs/api/java/lang/VirtualMachineError.html

 Error 클래스는 시스템 레벨에서 발생하는 오류들로 구성되어 있습니다.  VirtualMachineError 클래스를 상속받는 클래스들을 보면 OutOfMemory, StackOverflow등 JVM에서 발생하는 에러들을 볼 수 있습니다. 이를 해결하려면 jvm option 변경하는 등의 대응이 필요합니다.

 

 

다음은 Exception 클래스 입니다.

 

Exception 클래스를 상속받는 대표적인 클래스로는 RuntimeException이 있습니다. NullPointerException이나 IndexOutOfBoundsException이 포함되어 있습니다. 클래스 이름이 많이 익숙한데요. 개발자 로직구현에서 발생하는 문제들에 의해 발생되기 때문입니다. 코드상에서 발생된 문제이기 때문에 코드를 수정하여 비교적 쉽게 해결할 수 있다는 특징이 있습니다.

 

 

 Exception 클래스는 CheckedException과 UnCheckedException으로 분류가 됩니다. 어떤 기준으로 나누는지와 차이점을 이어서 알아보겠습니다.

 

 

 >> Unchekced Exception과 Checked Exception 

 

언체크 예외 Unchekced Exception : 

RuntimeException 하위 클래스를 말하며, 컴파일시에 체크를 하지 않기때문에 런타임에서 발생하는 Exception을 말합니다. 위에 예시로 제시한 NullPointerException이나 IndexOutOfBoundsException이 대표적입니다. 

 

Unchekced Exception에서 try/catch 문과 같이 예외처리를 강제하지 않습니다. IndexOutOfBoundsException로 예를들면 개발자가 배열의 인덱스를 알맞게 참조한 코드를 개발할 것이라는 것을 신뢰함을 전제하기 때문에 예외를 강제하지 않습니다. 그리고 로직에 의해 런타임에 발생하는 Exception은 컴파일 단계에서 확인할 수 없고 프로그램이 수행하면서 발생하는 것이기 때문이기도 합니다.

 

체크 예외 Checked Exception : 

Checked Exception은 Exception 클래스를 상속받는 클래스 중에 Unchecked Exception을 제외한 모든 클래스를 지칭합니다. 대표적으로 FileIOException과 SQLException등이 있습니다.

 

Checked Exception은 Compile Exception이라고도 불리는데요. 컴파일 단계에서 사전에 체크할 수 있기 때문에 컴파일시 Exception이 발생하면 이를 해결해야 컴파일할 수 있습니다.

 

 

 

 >> Checked Exception인 @Transactional이 적용되지 않는 경우 

스프링 @Transactional 어노테이션이 적용된 메서드는 중간에 Exception 발생시 적용된 내용이 데이터베이스에 반영되지 않고 롤백되는데요. 내부에 CheckedException이 발생하면 롤백이 수행되지 않습니다.

 

 해당 내용의 자세한 설명은 다음 포스팅에서 작성 예정이니 참고부탁드립니다.

[[Spring Transactional 어노테이션이 적용되지않는 케이스 정리]]

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기