JAVA - Checked Exception, Unchecked Exception

개발자 이상규·2022년 5월 15일
0

Java

목록 보기
3/6

UncheckedException (RuntimeException)

  • UncheckedException은 일반적으로 RuntimeException으로 불리고
    RuntimeException은 Exception의 자식입니다.
  • CheckedException과 달리 method() throws Exception을 선언하지 않고 생략할 수 있습니다.
  • 언체크 예외는 따로 catch문으로 잡거나, throws로 선언하지 않아도 됩니다. 언체크 예외는 프로그램에 오류가 있을 때 발생하도록 의도된 것들입니다.

CheckedException

일반적으로 CheckedException은 컴파일 시점에서 컴파일러가 체크하게 되고
RuntimeException은 컴파일러가 체크하지 않고 빌드되어 예외가 발생할때 동작됩니다.

UncheckedException (RuntimeException)의 장단점

  • RuntimeException은 method() throws Exception을 생략할 수 있기 때문에 장단점이 존재합니다.
  • 장점 : throws를 생략할 수 있기때문에 예외를 무시할 수 있기 때문에 예외로 인해 레이어간 의존관계가 생기는걸 막을 수 있습니다.
  • 단점 : 개발자가 예외를 누락할 가능성이 생깁니다.

CheckedException의 장단점

  • CheckedException는 예외를 catch하여 처리할 수 없을때 method() throws exception을 선언해주어야 하고 선언을 해주지 않으면 컴파일 오류가 발생합니다.
  • 장점 : 개발자의 실수 방지
  • 단점 : 모든 CheckedException을 핸들링을 해야 되기 때문에 번거롭게 되고 레이어간 의존관계가 생기게 되버립니다.

자바가 기본적으로 제공하는 기능들에는 CheckedException이 많고 이를 해결하려면
RuntimeException으로 변경하는 작업을 해주면 됩니다.

public void call() {
	try {
		runSQL(); // CheckedException, SQLException이 발생하는 코드
	} catch (SQLException e) {
     	throw new RuntimeSQLException(e); // RuntimeException으로 변환
	}
}

위의 코드 방식으로 CheckedException을 RuntimeException으로 변경할 수 있고
반드시 에러 e 전체를 RuntimeException에 넣어주어야 기존에 발생한 로그와 stack trace를 확인할 수 있습니다.





reference : http://plus4070.github.io/nhn%20entertainment%20devdays/2017/01/22/Exception/, 김영한선생님

profile
Contact: leeeesanggyu@gmail.com

0개의 댓글