
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();
} catch (SQLException e) {
throw new RuntimeSQLException(e);
}
}
위의 코드 방식으로 CheckedException을 RuntimeException으로 변경할 수 있고
반드시 에러 e 전체를 RuntimeException에 넣어주어야 기존에 발생한 로그와 stack trace를 확인할 수 있습니다.
reference : http://plus4070.github.io/nhn%20entertainment%20devdays/2017/01/22/Exception/, 김영한선생님