JavaBookStudy / JavaBook

책읽기 스터디
https://javabookstudy.github.io/
Apache License 2.0
19 stars 2 forks source link

[토비의 스프링] 4.1.4_DuplicatedUserIdException을 런타임 예외로 포장 #90

Closed taxol1203 closed 3 years ago

taxol1203 commented 3 years ago

292p, 마지막 문단에서,

어디에서든 DuplicatedUserIdException을 잡아서 처리할 수 있다면 굳이 체크 예외로 만들지 않고 런타임 예외로 만드는 것이 낫다.

이 문장의 뜻은, 어짜피 Excetion을 catch로 잡아 봤자 복구 할 방법이 없으므로, 차라리 아이디 중복을 나타내는 예외인 DuplicatedUserIdException으로 포장하고 더 이상의 예외 처리를 하지 않겠다는 뜻으로 런타임 예외로 만든다는 뜻으로 이해하면 될까요??

daebalprime commented 3 years ago

그 반대죠. 충분히 처리 가능한 예외기 때문에 main에서부터 add() 사이의 어떤 메서드가 그것을 처리할 것이기에 , 예를 들어서 main()->f1()->f2()->...->fn()->add() 순으로 호출이 되었다고 가정해봅시다. f2() 메서드에서 DuplicateUserIdException 예외 처리를 한다고 가정했을 때, f3()-fn()메서드에서 이를 어떻게 토스하게 될 것인지 생각해보면 좋을 것 같습니다. 체크 예외의 경우, throws든 try-catch블록을 이용한 처리든 f3-fn 메서드에서 처리가 강제가 됩니다. 귀찮고 반복적인 작업이 될 것입니다. 런타임 예외의 경우, 해당 예외를 던지는 메서드에 throws로 '나 이런 예외 던져~' 하는 일종의 자바독스 작성과 같은 역할만을 하고, f2()에서 처리하는 로직만을 작성하면 끝이며 f3~fn 메서드는 이에 대해 전혀 신경을 쓰지 않아도 되는 상황이 되기 때문에 런타임 예외로 만드는 것이 좋다고 권장하는 것 같습니다.