Exception, Error 차이

woga·2021년 7월 25일
0

Android 공부

목록 보기
6/49

Error란?

시스템 레벨에서 발생한다.
시스템에 비정상적인 상황이 생겼을 때 발생하며 시스템 레벨에서 발생하기 대문에 심각한 수준의 오류이다.
그래서 시스템에 변화를 줘서 문제를 처리해야 하는 경우가 일반적이다.

Exception이란?

개발자가 구현한 로직에서 발생한다.
예외가 발생할 상황을 미리 예측하여 처리할 수 있다.

Exception 종류

exception은 checked Excetpionunchecked exception으로 나뉜다.

Exception은 수많은 자식 클래스를 가지고 있는데, Runtiem Exception을 기준으로 Checked인지 Unchecked인지 구분할 수 있다.

Runtime Exception을 제외한 모든 클래스는 Checked Exception이며, Runtime Exception과 그의 자식 클래스들을 Uncheck Exception이라 한다.

Checked Vs Unchecked

checked

  • 반드시 예외를 처리해야 함
  • 컴파일 단계에서 확인할 수 있음
  • 예외발생 시,트랜잭션 처리? roll-back 하지 않음
  • 대표적으로, IOException, SQLException이 있음

unchecked exception

  • 명시적인 처리를 강제하지 않음
  • 실행 단계에서 확인할 수 있음
  • 예외발생 시, 트랜잭션? roll-back 함
  • 대표적으로, NullPointerException, IlegalArgumentException, IndexOutOfBoundException, SystemException이 있음

이들의 구분 기준은 꼭 처리를 해야 하느냐이다.
Checked Exception이 발생할 가능성이 있는 메소드라면 반드시 로직을 try/catch로 감싸거나 throw로 던져서 처리해야 한다.

반면 Uncheck Exception은 명시적인 예외처리를 하지 않아아도 된다. 이 예외는 피할 수 있지만 개발자의 부주의로 발생하는 경우가 대부분이다.
미리 예측하지 못했던 상황에서 발생하는 예외가 아니기 때문에 굳이 로직으로 처리할 필요가 없도록 만들어져 있다.

그리고 일반적으로 컴파일 단계에서 명확하게 Exception을 체크가 가능한 것을 checked라 하며 실행 과정 중 어떠한 특정 논리에 의해 발견되는 Exception을 unchecked이다.
하지만 unchecked는 예외 발생 시 트랜잭션을 roll-back한다는 점에서 차이가 있다.

Reference

https://www.nextree.co.kr/p3239/

profile
와니와니와니와니 당근당근

0개의 댓글