예외 처리
12 Dec 2019
모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보돼야한다.
적절하게 복구
- 대부분의 경우 적절하게 복구 할 방법이 마땅치 않다.
- 타임아웃 같은 에러의 경우 재시도를 해보는 정도이지 않을까…
작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보
checked exception
- 컴파일러가 체크하는 예외
- Exception 클래스의 서브클래스이면서 RuntimeException 클래스를 상속하지 않은 것들
- try catch로 처리하거나 던져져야 한다.
- (코틀린은 checked exception처리를 강제하지 않는다.)
- 일반적으로 체크 예외를 계속 throws를 사용해 넘기는 건 무의미하다. 메소드 선언은 지저분해지고 아무런 장점이 없다.
- 어차피 복구가 불가능한 예외라면 가능한 한 빨리 런타임 예외로 포장해 던지게 해서 다른 계층의 메소드를 작성할 때 불필요한 throws 선언이 들어가지 않도록 해줘야 한다.
unchecked exception
- 컴파일러가 체크하지 않는 예외
- RuntimeException을 상속한 클래스들
- 피할 수 있지만 개발자가 부주의해서 발생할 수 있는 경우에 발생하도록 만든 것이 런타임 예외
- 예상하지 못했던 예외상황에서 발생하는 게 아니기 때문에 굳이 catch나 throws를 사용하지 않아도 되도록 만든 것이다.