근래의 예외 처리 트렌드

checked exception을 catch 블록으로 처리할 때 unchecked exception으로 바꿔서 던지기
try블록으로 예외 처리하기 때문에 함수 시그니처의throws절도 빠짐

unchecked exception으로 바꿔서 던지면 이전 강의에서 본 호출 트리에서 문제점이 다시 드러남

예외로부터 회복하지 않는 방향
이전 강의에서 본 포인트로 결제하는 연산에서 생각해보기
- 예외로부터 안전한 프로그래밍 참고
- 포인트 회복, 재고 복구
- 이런 회복 작업에서도 오류가 발생할 수 있음
- 예외를 처리하려다 오히려 고칠게 많아지죠?
- 따라서 실패하면 바로 종료하고 고치고 재시작하는게 더 좋을 수도 있음
- 이런 회복 작업에서도 오류가 발생할 수 있음
예외의 세분성에 대한 고민(exception granularity)

이전 강의에서 봤듯이 예전에는 checked exception 위주로 모든 예외를 회복시키는 것이 유행
회복을 위해서는 문제를 특정하는 것이 유리함
- 발생할 수 있는 문제마다 예외 클래스를 만들고 처리
- 타입에 의존하면 명확하게 어떤 예외인지 알 수 있고
catch문에서 처리하기도 편하고

구체적인 예외를 던지되 main() 함수의 catch 블록에서 Exception으로 잡아서 한 방에 처리
- 극단적인 주장으로 구체적인 예외 대신
RuntimeException으로 무조건 던지자는 의견도 있음- 대신 메시지를 구체적으로 잘 작성하자
“처리”라는 표현의 애매함
- 로그는 남기되 정상 회복 작업을 하는건 아님
- 그리고
catch에서Exception으로 한 방에 잡으면 예외 타입을 알기 어렵기 때문에 정상 회복 작업 하기도 어려움